80
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS LABORATORIO 1 ENTORNO DE PROGRAMACIÓN VISUAL PROLOG OBJETIVOS Los objetivos de ésta práctica son: Conocer Prolog. Conocer el manejo de Visual Prolog. Conocer la forma de declarar y utilizar los predicados Desarrollar ejemplos en modo consola o texto. Prolog es un lenguaje de programación hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio . 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 estas propiedades y estas relaciones es un programa Prolog. Prolog es un lenguaje de programación que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos. 1. TIPOS DE DATOS EN PROLOG Symbol Hay dos tipos de símbolos: 1. Un grupo de caracteres consecutivos (letras, números y signos de subrayado) que comienzan con un carácter en minúscula Ejemplo: Alto,Alto_edificio,El_alto_edificio_en_la_ciudad Ing. Jennifer Rocio Pillaca De La Cruz. 1 Lab. Sistemas Expertos Ing. Elinar Carrillo Riveros

Guia_s de Laboratorios

Embed Size (px)

Citation preview

Page 1: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 1

ENTORNO DE PROGRAMACIOacuteN VISUAL PROLOG

OBJETIVOS

Los objetivos de eacutesta praacutectica son

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

Prolog es un lenguaje de programacioacuten hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio 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 estas propiedades y estas relaciones es un programa Prolog

Prolog es un lenguaje de programacioacuten que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos

1 TIPOS DE DATOS EN PROLOG

Symbol

Hay dos tipos de siacutembolos

1 Un grupo de caracteres consecutivos (letras nuacutemeros y signos de subrayado) que comienzan con un caraacutecter en minuacutescula

Ejemplo AltoAlto_edificioEl_alto_edificio_en_la_ciudad

2 Un grupo de caracteres consecutivos (letras y nuacutemeros) que comienzan y terminan con dobles comillas() Este tipo es uacutetil cuando se quiere comenzar el siacutembolo con un caraacutecter en mayuacutescula o si se quieres agregar espacios entre los caracteres del siacutembolo

Ejemploaltoalto edificio

String

Cualquier grupo de caracteres consecutivos (letras y nuacutemeros) que comience y termine con dobles comillas() Es igual a siacutembolo pero Prolog los trata de forma distinta

Ing Jennifer Rocio Pillaca De La Cruz 1 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemploaltoalto edificio

Integer

Cualquier nuacutemero comprendido entre (-32768 y 32768) El liacutemite esta determinado porque los enteros se almacenan como valores de 16 bits este liacutemite puede variar seguacuten la versioacuten de Prolog

Ejemplo4-3003004

Real

Cualquier numero real en el rango +- 1E-307 a +-1E+308 El formato incluye estas opciones signo numero punto decimal fraccioacuten E(exponente) signo para el exponente exponente

Ejemplo331415

Char

Cualquier caraacutecter de la lista ASCII estaacutendar posicionado entre dos comillas sencillas (lsquo)

EjemploslsquotrsquolsquoX PROLOG estaacute orientado a la resolucioacuten de problemas mediante el caacutelculo de predicados basado en

Preguntas a la base de datos Pruebas matemaacuteticas

El programa PROLOG especifiacuteca coacutemo debe ser la solucioacuten en vez de dar el algoritmo para su resolucioacuten La solucioacuten se obtiene mediante buacutesqueda aplicando la loacutegica de predicados

Objetos de datos

Tipos de datos primitivos variables y constantes Enteros Reales Caracteres

Los identificadores con minuacutescula representan hechos los que van con mayuacutescula variables El alcance de una variable es la regla donde aparece

Ing Jennifer Rocio Pillaca De La Cruz 2 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

1 EL ENTORNO DE VISUAL PROLOG

PARTE 1 Corriendo el Primer Programa en Visual PrologLos 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

Para ejecutar Visual Prolog nos dirigimos al menuacute inicio una vez dentro realizamos lo siguiente

Presionamos la opcioacuten New del menuacute File lo que apareceraacute una ventana en la cual copie lo siguiente

Luego almacene su archivo donde deseara pero siempre con la extensioacuten pro luego de almacenar el archivo notara el cambio de color de algunas letras del programa que copio si no ubicoacute la extensioacuten no sucederaacute el cambio

Anaacutelisis del programa

Ing Jennifer Rocio Pillaca De La Cruz 3 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La estructuracioacuten de un programa en Visual Prolog contiene estas partes requeridas necesariamente

Domains aquiacute se definen los tipos de datos que se han de usar en los predicados asiacute por ejemplo

hombre = string metal = symbol numeros = real letra = char

Predicates aquiacute se definen todos los predicados que se han de definir en las claacuteusulas equivaldriacutea a la definicioacuten de funciones en lenguaje C utilizan las definiciones de Domains asiacute por ejemplo

valioso(metal) Hermano(hombre hombre) amigos( hombrehombrehombre)

Clauses contiene la definicioacuten especiacutefica de los predicados

valioso(oro) hermano(ldquojuanrdquo ldquopedrordquo) amigos( rdquoluisrdquordquopedrordquopablordquo)

El siacutembolo de culminacioacuten se determina por un punto

Goal contiene las consultas a desarrollar en el programa

El prolog permite como se indico extraer consultas loacutegicas de los que sucede en el conocimiento expresado resultando estas consultas verdaderas o falsas (YES NO) seguacuten corresponda aquiacute se han de ubicar las preguntas necesarias ejemplo es valioso el oro

valioso(oro)

Para poner en memoria todas las claacuteusulas y ver la consulta ejecute Test Goal del menuacute de proyecto o su equivalente CTRL+G o simplemente apretando el botoacuten G de la barra de botones

Luego observara una ventana de sugerencias y errores y otra ventana que muestra el resultado de la consulta en este caso YES

Noacutetese que se ha ejecutado la consulta para crear un ejecutable se tiene que crear un proyecto echo que se desarrollara despueacutes

PARTE 2 Entendiendo y Mejorando el Programa

Ing Jennifer Rocio Pillaca De La Cruz 4 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

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

Indican que la La plata es valiosa el oro es valioso Todos estos predicados se escriben en un programa de Prolog Tras correr el programa se pueden hacer estas consultas

Valioso(oro) iquestEs 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 mayuacutesculaAl ejecutar la consulta la respuesta seraacute

X=oroX=plataX=bronce3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en las claacuteusulas

Si desea aumentar las especificaciones puede ubicar

valioso(cobre)valioso(zing)

La respuesta permitiraacute cinco soluciones para X

Consideracioacuten

Si desea mejorar su aplicacioacuten podria ubicar entre comillas todo su programa todas las especificaciones de las claacuteusulas el paquete generara de mejor forma estas definiciones ubicaacutendolas de un color respectivo

Especificaciones en Verde Amarillento Claacuteusulas en Negro Cadenas en azul Variables en verde claro errores en rojo etc

El programa quedariacuteaDomains metal = stringPredicates valioso(metal) Predicado uacutenico no siempre seraacute asiacuteClauses valioso(oro)

Ing Jennifer Rocio Pillaca De La Cruz 5 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 2: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemploaltoalto edificio

Integer

Cualquier nuacutemero comprendido entre (-32768 y 32768) El liacutemite esta determinado porque los enteros se almacenan como valores de 16 bits este liacutemite puede variar seguacuten la versioacuten de Prolog

Ejemplo4-3003004

Real

Cualquier numero real en el rango +- 1E-307 a +-1E+308 El formato incluye estas opciones signo numero punto decimal fraccioacuten E(exponente) signo para el exponente exponente

Ejemplo331415

Char

Cualquier caraacutecter de la lista ASCII estaacutendar posicionado entre dos comillas sencillas (lsquo)

EjemploslsquotrsquolsquoX PROLOG estaacute orientado a la resolucioacuten de problemas mediante el caacutelculo de predicados basado en

Preguntas a la base de datos Pruebas matemaacuteticas

El programa PROLOG especifiacuteca coacutemo debe ser la solucioacuten en vez de dar el algoritmo para su resolucioacuten La solucioacuten se obtiene mediante buacutesqueda aplicando la loacutegica de predicados

Objetos de datos

Tipos de datos primitivos variables y constantes Enteros Reales Caracteres

Los identificadores con minuacutescula representan hechos los que van con mayuacutescula variables El alcance de una variable es la regla donde aparece

Ing Jennifer Rocio Pillaca De La Cruz 2 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

1 EL ENTORNO DE VISUAL PROLOG

PARTE 1 Corriendo el Primer Programa en Visual PrologLos 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

Para ejecutar Visual Prolog nos dirigimos al menuacute inicio una vez dentro realizamos lo siguiente

Presionamos la opcioacuten New del menuacute File lo que apareceraacute una ventana en la cual copie lo siguiente

Luego almacene su archivo donde deseara pero siempre con la extensioacuten pro luego de almacenar el archivo notara el cambio de color de algunas letras del programa que copio si no ubicoacute la extensioacuten no sucederaacute el cambio

Anaacutelisis del programa

Ing Jennifer Rocio Pillaca De La Cruz 3 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La estructuracioacuten de un programa en Visual Prolog contiene estas partes requeridas necesariamente

Domains aquiacute se definen los tipos de datos que se han de usar en los predicados asiacute por ejemplo

hombre = string metal = symbol numeros = real letra = char

Predicates aquiacute se definen todos los predicados que se han de definir en las claacuteusulas equivaldriacutea a la definicioacuten de funciones en lenguaje C utilizan las definiciones de Domains asiacute por ejemplo

valioso(metal) Hermano(hombre hombre) amigos( hombrehombrehombre)

Clauses contiene la definicioacuten especiacutefica de los predicados

valioso(oro) hermano(ldquojuanrdquo ldquopedrordquo) amigos( rdquoluisrdquordquopedrordquopablordquo)

El siacutembolo de culminacioacuten se determina por un punto

Goal contiene las consultas a desarrollar en el programa

El prolog permite como se indico extraer consultas loacutegicas de los que sucede en el conocimiento expresado resultando estas consultas verdaderas o falsas (YES NO) seguacuten corresponda aquiacute se han de ubicar las preguntas necesarias ejemplo es valioso el oro

valioso(oro)

Para poner en memoria todas las claacuteusulas y ver la consulta ejecute Test Goal del menuacute de proyecto o su equivalente CTRL+G o simplemente apretando el botoacuten G de la barra de botones

Luego observara una ventana de sugerencias y errores y otra ventana que muestra el resultado de la consulta en este caso YES

Noacutetese que se ha ejecutado la consulta para crear un ejecutable se tiene que crear un proyecto echo que se desarrollara despueacutes

PARTE 2 Entendiendo y Mejorando el Programa

Ing Jennifer Rocio Pillaca De La Cruz 4 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

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

Indican que la La plata es valiosa el oro es valioso Todos estos predicados se escriben en un programa de Prolog Tras correr el programa se pueden hacer estas consultas

Valioso(oro) iquestEs 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 mayuacutesculaAl ejecutar la consulta la respuesta seraacute

X=oroX=plataX=bronce3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en las claacuteusulas

Si desea aumentar las especificaciones puede ubicar

valioso(cobre)valioso(zing)

La respuesta permitiraacute cinco soluciones para X

Consideracioacuten

Si desea mejorar su aplicacioacuten podria ubicar entre comillas todo su programa todas las especificaciones de las claacuteusulas el paquete generara de mejor forma estas definiciones ubicaacutendolas de un color respectivo

Especificaciones en Verde Amarillento Claacuteusulas en Negro Cadenas en azul Variables en verde claro errores en rojo etc

El programa quedariacuteaDomains metal = stringPredicates valioso(metal) Predicado uacutenico no siempre seraacute asiacuteClauses valioso(oro)

Ing Jennifer Rocio Pillaca De La Cruz 5 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 3: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

1 EL ENTORNO DE VISUAL PROLOG

PARTE 1 Corriendo el Primer Programa en Visual PrologLos 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

Para ejecutar Visual Prolog nos dirigimos al menuacute inicio una vez dentro realizamos lo siguiente

Presionamos la opcioacuten New del menuacute File lo que apareceraacute una ventana en la cual copie lo siguiente

Luego almacene su archivo donde deseara pero siempre con la extensioacuten pro luego de almacenar el archivo notara el cambio de color de algunas letras del programa que copio si no ubicoacute la extensioacuten no sucederaacute el cambio

Anaacutelisis del programa

Ing Jennifer Rocio Pillaca De La Cruz 3 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La estructuracioacuten de un programa en Visual Prolog contiene estas partes requeridas necesariamente

Domains aquiacute se definen los tipos de datos que se han de usar en los predicados asiacute por ejemplo

hombre = string metal = symbol numeros = real letra = char

Predicates aquiacute se definen todos los predicados que se han de definir en las claacuteusulas equivaldriacutea a la definicioacuten de funciones en lenguaje C utilizan las definiciones de Domains asiacute por ejemplo

valioso(metal) Hermano(hombre hombre) amigos( hombrehombrehombre)

Clauses contiene la definicioacuten especiacutefica de los predicados

valioso(oro) hermano(ldquojuanrdquo ldquopedrordquo) amigos( rdquoluisrdquordquopedrordquopablordquo)

El siacutembolo de culminacioacuten se determina por un punto

Goal contiene las consultas a desarrollar en el programa

El prolog permite como se indico extraer consultas loacutegicas de los que sucede en el conocimiento expresado resultando estas consultas verdaderas o falsas (YES NO) seguacuten corresponda aquiacute se han de ubicar las preguntas necesarias ejemplo es valioso el oro

valioso(oro)

Para poner en memoria todas las claacuteusulas y ver la consulta ejecute Test Goal del menuacute de proyecto o su equivalente CTRL+G o simplemente apretando el botoacuten G de la barra de botones

Luego observara una ventana de sugerencias y errores y otra ventana que muestra el resultado de la consulta en este caso YES

Noacutetese que se ha ejecutado la consulta para crear un ejecutable se tiene que crear un proyecto echo que se desarrollara despueacutes

PARTE 2 Entendiendo y Mejorando el Programa

Ing Jennifer Rocio Pillaca De La Cruz 4 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

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

Indican que la La plata es valiosa el oro es valioso Todos estos predicados se escriben en un programa de Prolog Tras correr el programa se pueden hacer estas consultas

Valioso(oro) iquestEs 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 mayuacutesculaAl ejecutar la consulta la respuesta seraacute

X=oroX=plataX=bronce3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en las claacuteusulas

Si desea aumentar las especificaciones puede ubicar

valioso(cobre)valioso(zing)

La respuesta permitiraacute cinco soluciones para X

Consideracioacuten

Si desea mejorar su aplicacioacuten podria ubicar entre comillas todo su programa todas las especificaciones de las claacuteusulas el paquete generara de mejor forma estas definiciones ubicaacutendolas de un color respectivo

Especificaciones en Verde Amarillento Claacuteusulas en Negro Cadenas en azul Variables en verde claro errores en rojo etc

El programa quedariacuteaDomains metal = stringPredicates valioso(metal) Predicado uacutenico no siempre seraacute asiacuteClauses valioso(oro)

Ing Jennifer Rocio Pillaca De La Cruz 5 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 4: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La estructuracioacuten de un programa en Visual Prolog contiene estas partes requeridas necesariamente

Domains aquiacute se definen los tipos de datos que se han de usar en los predicados asiacute por ejemplo

hombre = string metal = symbol numeros = real letra = char

Predicates aquiacute se definen todos los predicados que se han de definir en las claacuteusulas equivaldriacutea a la definicioacuten de funciones en lenguaje C utilizan las definiciones de Domains asiacute por ejemplo

valioso(metal) Hermano(hombre hombre) amigos( hombrehombrehombre)

Clauses contiene la definicioacuten especiacutefica de los predicados

valioso(oro) hermano(ldquojuanrdquo ldquopedrordquo) amigos( rdquoluisrdquordquopedrordquopablordquo)

El siacutembolo de culminacioacuten se determina por un punto

Goal contiene las consultas a desarrollar en el programa

El prolog permite como se indico extraer consultas loacutegicas de los que sucede en el conocimiento expresado resultando estas consultas verdaderas o falsas (YES NO) seguacuten corresponda aquiacute se han de ubicar las preguntas necesarias ejemplo es valioso el oro

valioso(oro)

Para poner en memoria todas las claacuteusulas y ver la consulta ejecute Test Goal del menuacute de proyecto o su equivalente CTRL+G o simplemente apretando el botoacuten G de la barra de botones

Luego observara una ventana de sugerencias y errores y otra ventana que muestra el resultado de la consulta en este caso YES

Noacutetese que se ha ejecutado la consulta para crear un ejecutable se tiene que crear un proyecto echo que se desarrollara despueacutes

PARTE 2 Entendiendo y Mejorando el Programa

Ing Jennifer Rocio Pillaca De La Cruz 4 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

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

Indican que la La plata es valiosa el oro es valioso Todos estos predicados se escriben en un programa de Prolog Tras correr el programa se pueden hacer estas consultas

Valioso(oro) iquestEs 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 mayuacutesculaAl ejecutar la consulta la respuesta seraacute

X=oroX=plataX=bronce3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en las claacuteusulas

Si desea aumentar las especificaciones puede ubicar

valioso(cobre)valioso(zing)

La respuesta permitiraacute cinco soluciones para X

Consideracioacuten

Si desea mejorar su aplicacioacuten podria ubicar entre comillas todo su programa todas las especificaciones de las claacuteusulas el paquete generara de mejor forma estas definiciones ubicaacutendolas de un color respectivo

Especificaciones en Verde Amarillento Claacuteusulas en Negro Cadenas en azul Variables en verde claro errores en rojo etc

El programa quedariacuteaDomains metal = stringPredicates valioso(metal) Predicado uacutenico no siempre seraacute asiacuteClauses valioso(oro)

Ing Jennifer Rocio Pillaca De La Cruz 5 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 5: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

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

Indican que la La plata es valiosa el oro es valioso Todos estos predicados se escriben en un programa de Prolog Tras correr el programa se pueden hacer estas consultas

Valioso(oro) iquestEs 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 mayuacutesculaAl ejecutar la consulta la respuesta seraacute

X=oroX=plataX=bronce3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en las claacuteusulas

Si desea aumentar las especificaciones puede ubicar

valioso(cobre)valioso(zing)

La respuesta permitiraacute cinco soluciones para X

Consideracioacuten

Si desea mejorar su aplicacioacuten podria ubicar entre comillas todo su programa todas las especificaciones de las claacuteusulas el paquete generara de mejor forma estas definiciones ubicaacutendolas de un color respectivo

Especificaciones en Verde Amarillento Claacuteusulas en Negro Cadenas en azul Variables en verde claro errores en rojo etc

El programa quedariacuteaDomains metal = stringPredicates valioso(metal) Predicado uacutenico no siempre seraacute asiacuteClauses valioso(oro)

Ing Jennifer Rocio Pillaca De La Cruz 5 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 6: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

valioso(plata) valioso(bronce) valioso(cobre) Claacuteusulas agregadas valioso(zing)Goal valioso(X) Consulta

PARTE 3 Buacutesquedas Entendiendo las Variables y Predicados

La practica le permitiraacute proponer un sistema experto que deduzca quien es cuntildeado de quien en una familia en base a una serie de conocimientos propuestos para esto se ira paso a paso

Crear un Documento en Visual Prolog y copiar

Ahora se pretende buscar en la base de conocimiento ingresada para esto se tendraacute que aplicar GOAL en la ugraveltima liacutenea de coacutedigo (que falta) modificaacutendola cada vez y haciendo correr la consulta con el botoacuten G

Casos Indicar cual es la respuesta de la consulta

Quien es hijo ldquoDanrdquo Ing Jennifer Rocio Pillaca De La Cruz 6 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 7: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

GOAL hijo(X Dan)Respuesta

Todos los hijosGOAL hijo(XY)

Respuesta

Hermanas de ldquoSuerdquoGOAL

Respuesta

Hermanas de ldquoSusanardquoGOAL

Respuesta

Hermanos de ldquoLarryrdquoGOAL

Respuesta

Todos los casadosGOAL

Respuesta

Todos los hijos de DanGOAL

Respuesta

PARTE 4 Mejorando los Predicados Usando -

La idea de esta parte es encontrar quien es cuntildeado de quien en base a las claacuteusulas definidas anteriormente para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES)

PREDICATES cunado(personapersona)CLAUSES cunado(AB)-casado(AC) hermana(CB) cunado(AB)-hermano(AC) casado(CB)

Ing Jennifer Rocio Pillaca De La Cruz 7 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 8: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Referencia Las variables A B y C permiten desarrollar las buacutesquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuntildeado y se ven como respuestas

Consultas

De quien es el cuntildeado(a) de JuanGOAL cunado(Juan Z)

Respuesta

Quien es el cuntildeado de MariaGOAL

Respuesta

Todos los cuntildeadosGOAL

Respuesta

PARTE 5 Mejorando la aplicacioacuten trabajando con nuevos predicadosSe desea conocer en base a los conocimientos definidos

PREDICATES padre(personapersona) abuelo(personapersona)CLAUSES padre(AB)-hijo(BA) no toma en cuenta los hermanos cruzados abuelo(AB)-padre(AC) padre(CB)

Consultas

Todos los padresGOAL

Respuesta

Todos los abuelosGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 8 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 9: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Se desea conocer los hermanos en comuacuten ya que no se distingue entre estos existen dos predicados diferentes hermana y hermano es mas esta no es una relacioacuten de arriba abajo si no del miso nivel por ejemplo si se consulta

GOAL hermana(SusanaX)

La respuesta es Sin Solucioacuten pero hermana(MariaSusana)

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

PREDICATES hermanos(personapersona)CLAUSES hermanos(AB)-hermano(AB) una claacuteusula hermano corresponde a hermanos hermanos(AB)-hermano(BA) un hermano puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(AB)-hermana(AB) una claacuteusula hermana corresponde a hermanos hermanos(AB)-hermana(BA) una hermana puede referirse en forma inversa definieacutendose asiacute en hermanos hermanos(PopoQuqu) Puede definirse nuevas claacuteusulas hermanos(Maria Pedro)

Referencia Noacutetese que un predicado no es solamente una definicioacuten si no que se puede sobrecargar osea redefinirla varias veces

Consultas

Todos los hermanos existentesGOAL

Respuesta

TRABAJO APLICATIVO

1 Sobrecargue el predicado hermanos para encontrar a los hermanos que tengan el

mismo padre utilizando el predicado hijo

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

hijo(Pedro Dan)hijo(Ivan Dan)

Ing Jennifer Rocio Pillaca De La Cruz 9 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 10: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Sobrecargue el predicado padre para encontrar a los hijos de un padre que

son los hermanos 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)

LABORATORIO 2PREDICADOS Y OPERADORES

OBJETIVOS

loz Comprender los predicados y Operadores

PROCEDIMIENTO

Buacutesquedas Entendiendo las Variables y Predicados

La praacutectica le permitiraacute proponer un sistema experto que deduzca toda una estructura familiar partiendo de solo definir quien es padre de quien esto se ira definiendo paso a paso

Primero se ha de construir la base de conocimientos con las siguientes definiciones

Domainspersona= string

Predicatespadre(personapersona)

Clausespadre(Pablo Juan) Pablo es padre de Juanpadre(Pablo Marcela)padre(Juan Maria) padre(Juan Maura)padre(Carlos Debora)padre(Maria Luis)padre(Maria Pati)padre(Debora Miguel)

Nota Se esta definiendo el predicado padre que representa al padre de familia no se esta considerando el geacutenero (masculino o femenino)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 10 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 11: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el padre de JuanGOAL padre(Quien Juan)

Respuesta

ldquoPablordquo de quien es padreGOAL

Respuesta

PARTE 2 Implementando maacutes predicados

Es necesario en base al conocimiento propuesto se debe conocer quien es hijo de

quien quien es el abuelo y los posibles hermanos en base a los datos anterioresNotaLa inclusioacuten de - representa la estructura condicional siLa inclusioacuten de representa conector loacutegico yLa inclusioacuten de representa conector loacutegico oLa inclusioacuten de ltgt representa conector loacutegico diferente

Defina los predicados y las claacuteusulas

Predicados a aumentar

Claacuteusulas a aumentar

Consultas

Quien es el hijo de ldquoPablordquoGOAL

Respuesta

Quien es el hijo de ldquoMariardquoGOAL

Respuesta

ldquoMarcelardquo de quien es hijoGOAL

Respuesta

Ing Jennifer Rocio Pillaca De La Cruz 11 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 12: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el abuelo de ldquoMariardquoGOAL

Respuesta

Quien es el abuelo de ldquoPatirdquoGOAL

Respuesta

ldquoJuanrdquo de quien es abueloGOAL

Respuesta

Mostrar todos los abuelosGOAL

Respuesta

Quien es el hermano de ldquoPatirdquoGOAL

Respuesta

Mostrar todos los hermanosGOAL

Respuesta

PARTE 3 Desarrollando maacutes predicados

Ahora hay que completar mas predicados por ejemplo Maura es sobrino de Marcela y Marcela es tiacutea de Maura por lo que es necesario desarrollar por lo que complete nuevos predicados

Predicatestio(personapersona)sobrino(personapersona)

Clauses

Ing Jennifer Rocio Pillaca De La Cruz 12 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 13: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es el tiacuteo de ldquoMariardquoGOAL

Respuesta

ldquoMaurardquo de quien es tioGOAL

Respuesta

Mostrar todos los tiosGOAL

Respuesta

Quien es el sobrino de ldquoMarcelardquoGOAL

Respuesta

ldquoPatirdquo de quien es sobrinoGOAL

Respuesta

Mostrar todos los sobrinosGOAL

Respuesta

PARTE 4 Desarrollando sus propios predicados y encontrando relaciones

Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que se presenta la siguiente propuesta de aacuterbol familiar tomando en cuenta que el lazo de unioacuten es ldquopadrerdquo

Familia 1 Familia 2 pablo carlos | juan marcela debora | maria maura miguel luis pati

Ing Jennifer Rocio Pillaca De La Cruz 13 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 14: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora se ve necesario identificar quien es familia de quien ya que pati no es familiar de Carlos por ejemplo para esto se tendraacute que proponer el predicado ldquofamiliar( )rdquo de manera que la respuesta a dar tendraacute que ser afirmativa en los casos necesarios por ejemplo

Goal familiar(mauramarcela) Respuesta YESGoal familiar(patijuan) Respuesta YESGoal familiar(deboraY) Respuestas Y=miguel Y=carlos 2 Solutions

Implementar los respectivos predicados

Despueacutes de completados los predicados realice las siguientes consultas

GOAL familiar(Marcela Maria)Respuesta

iquestPor queacute

GOAL familiar(JuanMarcela)Respuesta

iquestPor queacute

GOAL familiar(MiguelMarcela)Respuesta

iquestPor queacute

GOAL familiar(PatiJuan)Respuesta

iquestPor queacute

GOAL familiar(CarlosMiguel)Respuesta

iquestPor queacute

Goal familiar(DeboraY)

Ing Jennifer Rocio Pillaca De La Cruz 14 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 15: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

iquestPor queacute

GOAL familiar(PatiMarcela)Respuesta

iquestPor queacute

TRABAJO APLICATIVO

1 Realice un aacuterbol genealoacutegico de su familia que tenga desde hijo hasta

tatarabuelo

2 Del aacuterbol genealoacutegico de su familia realice los siguientes predicados hijo

padre hermano Y en base a estos predicados realiza los siguientes predicados

casado_con cuntildeado abuelo nieto tiacuteo sobrino primo bisabuelo bisnieto

tatarabuelo tataranieto etc

3 Haga una copia del ejercicio anterior y agregue los predicados varoacuten y mujer

Desarrolle los mismos predicados del ejercicio anterior pero considere el geacutenero

masculino y femenino en cada uno de ellos Ejemplo hijo hija madre padre

hermano hermana casado_con cuntildeado cuntildeada abuelo abuela nieto nieta tio

tiacutea sobrino sobrina primo prima bisabuelo bisabuelo bisnieto bisnieta

tatarabuelo tatarabuela tataranieto tataranieta

Ing Jennifer Rocio Pillaca De La Cruz 15 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 16: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 3

EJERCICIOS

1 La siguiente es la noacutemina de personal de una empresaDepartamento de ventasMariacutea empleada Juan cadeteDepartamento de comprasNora empleada Pedro cadeteDepartamento de administracioacutenAna cadeta Felipe empleado

Escribir un programa Prolog que modele a esta empresa tal que puedan responderse las siguientes

consultas

bull iquest quieacutenes trabajan en el departamento de compras iquest y en el de ventas bull dadas dos personas iquesttrabajan en el mismo departamentobull dadas dos personas a y b iquestpuede a darle oacuterdenes a b a puede darle oacuterdenes a b si y soacutelo si trabajan en el mismo departamento y a tiene un cargo superior a b Se considera que ldquoempleadordquo es un cargo superior a ldquocadeterdquo

Escribir las consultas planteadas y las respuestas que entregariacutea el inteacuterprete

b Agregar un gerente para cada departamentoc Agregar un gerente general

2 Escribir un programa Prolog que pueda responder consultas sobre queacute tipos de movimiento puede hacer un determinado animal

Tener en cuenta queLas aves pueden volar (no tener en cuenta las excepciones)Los mamiacuteferos pueden caminarLos felinos son mamiacuteferos que ademaacutes pueden correrLos peces y los delfines pueden nadarLos gatos son felinosLos canarios son avesLos perros son mamiacuteferosLos peces espada son peces e incluir a los siguientes animales como ejemplo

tweety es un canariomichifuz es un gatofido es un perroflipper es un delfiacutencuchi es un pez espada Ing Jennifer Rocio Pillaca De La Cruz 16 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 17: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 4

PREDICADOS DE ENTRADA SALIDA

En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados

Vamos a introducir una nueva ampliacioacuten sobre Prolog que no tiene nada que ver con la loacutegica Hasta ahora el uacutenico modo de comunicar informacioacuten a y desde Prolog es a traveacutes del proceso de unificacioacuten entre nuestras preguntas y las claacuteusulas del programa Pero puede que estemos interesados en una mayor interaccioacuten entre programa y usuario aceptando entradas del usuario y presentando salidas al mismo

Asiacute aparecen los predicados de EntradaSalida que para mantener la consistencia del sistema cumplen

- se evaluacutean siempre a verdad- nunca se pueden Resatisfacer la reevaluacioacuten continua hacia la izquierda- tiene un efecto lateral (efecto no loacutegico durante su ejecucioacuten) entrada o salida

de un caraacutecter teacutermino

SALIDA EN PROLOG

WritePermite mostrar caracteres y variables

Sintaxiswrite(Termino)

Imprime el teacutermino T en la pantalla

write(Termino)nl

Realiza el salto de liacutenea

write(Termino)nlfail

Ing Jennifer Rocio Pillaca De La Cruz 17 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 18: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Si no se ha de utilizar el fail cuando se muestra el texto de salida empiezan a aparecer las ocurrencias de las buacutesquedas en forma repetida de ahiacute que al usar write se recomienda usar fail siempre al final Noacutetese ademaacutes que siempre que utiliza fail se mostrara en la pantalla ldquoNordquo al final por esa razoacuten

Ejercicio1 Muestre en pantalla un saludo personalizado2 Muestre en pantalla

Ingenieriacutea de Sistemas

UNSCH

EjemploImplentar el siguiente coacutedigo en prolog

Domainspersona = symbolPredicatesnintildeo(persona) predicado nintildeojoven(persona) predicado jovenadulto(persona) predicado adultomuestra_texto predicado para mostrar cadenas sin variables equivalente a un procedimiento muestra_nino(persona) predicado para mostrar cadenas con una variable equivalente a una funcioacutenmuestra_joven(persona)muestra_adulto(persona) Clausesnintildeo(Juan)nintildeo(Luis)adulto(Mario)adulto(Maritza)adulto(Jorge)joven(Carlos)

muestra_texto-write(Probando ) write(Este es un texto)nlfailmuestra_nino(X)-nintildeo(X)write(El nintildeo esX)nlfailmuestra_joven(X)-joven(X)write(El joven esX)nlfailmuestra_adulto(X)-adulto(X)write(El adulto esX)nlfail

goal

Ing Jennifer Rocio Pillaca De La Cruz 18 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 19: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

muestra_textomuestra_nino(X)muestra_joven(X)muestra_adulto(X)

Registrar los resultados1 iquestQuieacutenes son los nintildeos

2 iquestQuieacutenes son los joacutevenes

3 iquestQuieacutenes son los adultos

ENTRADA EN PROLOG

readln(X) Lee un teacutermino introducido desde el teclado y lo unifica con su argumento X

USO DEL O LOacuteGICO ldquordquo

Antes de ingresar a una aplicacioacuten especiacutefica veamos una utilidad sencilla del ldquoo loacutegicordquo copie lo siguiente

Domainsverdad = symbol

Predicatesmira(verdad)lee(verdad)checa(verdad)revisa(verdad)

Clauseslee(Juan)lee(Luis)checa(Juan)checa(Pedro)mira(Juan)

Ing Jennifer Rocio Pillaca De La Cruz 19 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 20: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

mira(Pablo)

revisa(X)- mira(X) lee(X) checa(X)

Se supone que los predicados mira lee y checa hacen lo mismo ver si un nombre de una persona esta en la lista apenas esteacute una persona en la lista su presencia deberaacute darse como verdadera (YES el resultado) si la claacuteusula seria

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pedro revisaGoal revisa(Pedro)

Respuesta

Por queacute

Verificar si Pablo revisaGoal revisa(Pablo)

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

A pesar de que en el uacuteltimo caso la respuesta es verdadera existe un error es que solamente tiene que existir un verdadero entre mira lee o checa para que la respuesta total sea verdadera es asiacute que la claacuteusula debioacute de ser

revisa(X)- mira(X) lee(X) checa(X)

Consultas

Verificar si Pablo revisaGoal revisa(Pablo)

Ing Jennifer Rocio Pillaca De La Cruz 20 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 21: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Respuesta

Por queacute

Verificar si Juan revisaGoal revisa(Juan)

Respuesta

Por queacute

mira(X)

Lee(X)

checa(X)

revisa(X)-mira(X) lee(X)checa(X)

mira(X) ^ lee(X) ^checa(X) (AND)

revisa(X)- mira(X) lee(X)checa(X)

mira(X) v lee(X) v checa(X) (OR)

VVVVFFFF

VVFFVVFF

VFVFVFVF

VFFFFFFF

VVVVVVVF

Recuerde Verdad (V) YES y Falso (F) NOT

CONTINUANDO EL USO DEL O LOacuteGICO ldquordquo

En esta parte se desea mostrar como ingresando predicados relacionados en este caso ldquoamigordquo se puede buscar cuales son los amigos entre personas pero como es una relacioacuten uno a uno en pares en ocasiones existe dificultades que se han de reparar con el ldquoo loacutegicordquo ademaacutes en esta parte se ha de ver nuevamente la utilidad de ingresar valores con readln y mostrar los resultados con write

Copie la siguiente secuencia de coacutedigos

Domainsnombre = symbol

Predicatesamigo(nombre nombre) determina el amigo de alguien

Clausesamigo(Juan Pablo)amigo(Pablo Pipo)amigo(Pablo Pedrito)amigo(Lucho Juan)

Consultas

Ing Jennifer Rocio Pillaca De La Cruz 21 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 22: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Quien es amigo de PabloGoal amigo(X Pablo)

Respuesta

Lucho de quien es amigoGoal amigo(Lucho Y)

Respuesta

Hasta aquiacute se ha constituido quien es amigo de quien pero falta implementar la buacutesqueda de amigos este debe de retornar todos los amigos de una persona por ejemplo

Amigos de Pablo Juan Pipo y Pedrito Amigos de Juan Lucho y Pablo

Para saber quienes son amigos de alguien se tendriacutean que adicionar las siguientes claacuteusulas

amigo(Pablo Juan)amigo(Pipo Pablo)amigo(Pedrito Pablo)

amigo(Juan Lucho)

Ejecute la siguiente consulta y obtendraacute el resultado que estaba buscando

Todos los amigos de PabloGoal amigo(X Pablo)

Respuesta X Juan X Pipo X PedritoObtenemos la respuesta que estaacutebamos buscando pero ES INCORRECTO porque existe redundancia de datos

amigo(Juan Pablo)amigo(Pablo Juan)

Lo correcto es declarar el siguiente predicado

Ing Jennifer Rocio Pillaca De La Cruz 22 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 23: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Predicatesamigos(nombre nombre) determina los amigos de Izquierda a derecha y de derecha a izquierda

Clauses amigos(X Y)-amigo(Y X) amigo(X Y)

Ahora borre los predicados amigo que estaacuten de maacutes y ejecute las siguientes consultas

Todos los amigos de PabloGoal amigos(X Pablo)

Respuesta

Todos los amigos de JuanGoal amigos(X Juan)

Respuesta

Todos los amigosGoal amigos(X Juan)

Respuesta

Ahora desarrollaremos una interfaz que permitiraacute al usuario ingresar el nombre de una persona y se le devolveraacute como resultado los amigos de esa persona Agregue el siguiente coacutedigo

Predicateslee_nombre(nombre) Lee el nombre de la personamuestra_amigos(nombre) Lista los Amigomain Predicado principal

Clauseslee_nombre(X)-write(Ingrese el nombre ) readln(X)muestra_amigos(X)-amigos(XY) write(El amigo de X es Y) nl failmain-lee_nombre(X) muestra_amigos(X)

ConsultasLos amigos de Pablo (Consulte main y luego teclee el nombre de Pablo)

Goal main Respuesta

Los amigos de Juan

Ing Jennifer Rocio Pillaca De La Cruz 23 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 24: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Goal Respuesta

Explique como funciona el predicado main

LABORATORIO 5

OPERACIONES ARITMETICAS

PREDICADOS MATEMATICOSLos predicados matemaacuteticos utilizados en Prolog utilizan el formato estaacutendar relacioacuten(objeto)o bien el usuario puede crear sus propios predicados pero deberaacute considerar que Prolog no maneja ciclos sin embargo puede crear sus propias rutinas recursivas Operaciones

Operando 1 Operador Operando 2 Resultado

entero + - entero entero

real + - entero real

entero + - real real

real + - real real

entero oacute real entero oacute real real

entero div entero entero

entero mod entero entero

Orden de evaluacioacuten Si la expresioacuten contiene subexpresiones entre pareacutentesis las subexpresiones se

evaluacutean primero Si la expresioacuten contiene multiplicacioacuten divisioacuten suma o resta eacutestas son

realizadas de izquierda a derecha Orden de evaluacioacuten seguacuten precedencia de los operadores

Ing Jennifer Rocio Pillaca De La Cruz 24 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 25: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Operador Prioridad

+ - 1

mod div 2

- + (unario 3

Funciones y predicados

Nombre Descripcioacuten

X mod Y Resto de X dividido entre Y

X div Y Cociente de X dividido entre Y

abs(X) Valor absoluto de X

cos(X) Coseno de X

sin(X) Seno de X

tan(X) Tangente de X

arctan(X) Arcotangente de X

exp(X) e elevado al valor almacenado en X (Exponencial)

ln(X) Logaritmo neperiano de X

log(X) Logaritmo en base 10 de X

sqrt(X) Raiacutez cuadrada de X

random(X) Almacena en X un nuacutemero aleatorio real entre 0 y 1

random(X Y) Almacena en Y un nuacutemero aleatorio en el intervalo 0 lt= Y lt X

round(X) Valor redondeado de X El resultado es un nuacutemero real

trunc(X) Valor truncado de X El resultado es un nuacutemero real

val(domainX) Conversioacuten expliacutecita entre dominios numeacutericos

Comparaciones

Siacutembolo Relacioacuten

Ing Jennifer Rocio Pillaca De La Cruz 25 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 26: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

lt Menor que

lt= Menor o igual que

= igual que

gt Mayor que

gt= Mayor o igual que

ltgt o gtlt distinto

OPERACIONES ARITMEacuteTICAS

EJEMPLO 01 Realizar la suma de 2 nuacutemeros

Note que esto realiza la suma de dos nuacutemeros readint permite ingresar enteros y readln que ingresacadenas tambieacuten existe readreal para nuacutemeros reales noacutetese tambieacuten que se esta utilizando el predicado main

EJEMPLO 02 Realizar la siguiente operacioacuten S=((AB)+A)B Si B es 0 que emita un mensaje de error de divisioacuten

Ing Jennifer Rocio Pillaca De La Cruz 26 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 27: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJEMPLO 03 Hallar la raiacutez cuadrada de un nuacutemero

EJEMPLO 04 Ingresar 2 nuacutemeros y calcular el mayor nuacutemero

Ing Jennifer Rocio Pillaca De La Cruz 27 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 28: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO 01 Desarrolle la siguiente operacioacutenS = ((A B) + (B C))(A C)Tenga presente que tiene que leer POR TECLADO 3 nuacutemeros

Domains

Predicates

Clauses

Goal

EJERCICIO 02 Escriba un programa que aleatoriamente genere un nuacutemero positivo (entre 0 y 5) que luego Udadivine ingresaacutendolo por teclado debe considerar Mensaje de Felicitacioacuten o mensaje de Fallo seguacuten correspondaEl predicado para generar un nuacutemero aleatorio es random1 o random2random(X) -1048774 instancia X con un nuacutemero real cualquierarandom(100 X) -1048774 instancia X con un nuacutemero entero positivo menor que 100

DomainsPredicatesClausesGoal

Ing Jennifer Rocio Pillaca De La Cruz 28 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 29: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

RECURSIVIDAD Y CICLOSA continuacioacuten veremos una serie de programas con las que se plantea implementar bucles y ciclos basados en programacioacuten loacutegica

RecursividadLa recursividad es una teacutecnica de programacioacuten importante Se utiliza para realizar una llamada a una funcioacuten desde la misma funcioacuten

Las definiciones recursivas se encuentran frecuentemente en los programas Prolog

Algunos predicados de manejo de listas se definen recursivamente es decir el cuerpo de la claacuteusula se llama a siacute mismo En la recursividad debemos tener cuidado en que se cumplan las ldquocondiciones de liacutemiterdquo (punto de parada cuando utilizamos recursividad)

Podemos observar que en la llamada de la claacuteusula recursiva al menos uno de los argumentos crece o decrece para asiacute poder unificar en un momento dado con la claacuteusula de la condicioacuten de parada

En la recursioacuten encontramos dos partesLa primera parte en la que descendemos y construimos el aacuterbol hasta encontrar el valor que unifica con la condicioacuten de parada

Una segunda parte en la que ascendemos por el aacuterbol asignando valores a las variables que teniacuteamos pendientes en las sucesivas llamadas

Deberemos tener cuidado de no escribir recursiones circulares (entrada en un bucle que no terminariacutea nunca) y de evitar la recursioacuten a izquierdas (cuando una regla llama a un objetivo que es esencialmente equivalente al objetivo original) que causariacutean que Prolog no terminara nunca

Recursioacuten circular

Recursioacuten a izquierdas

Ejemplo01 El siguiente programa calcula la suma de los N primeros nuacutemeros

Ing Jennifer Rocio Pillaca De La Cruz 29 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 30: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Mejore el programa anterior para que el nuacutemero sea ingresado por teclado y el resultado sea mostrado de forma adecuada

Domains

Predicates

Clauses

Goal

Ejemplo 02 A continuacioacuten se muestra un programa que suma los nuacutemeros enteros pares anteriores a un nuacutemero entero ingresado por tecladoEjemplo Ingresamos el nuacutemero 7 y el programa debe de sumar2 + 4 + 6 = 12

Ing Jennifer Rocio Pillaca De La Cruz 30 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 31: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Consultas

Ejemplo 03 Un programa que calcula el Factorial de un nuacutemero entero cualquieraF=NN-1N-2hellip

Ing Jennifer Rocio Pillaca De La Cruz 31 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 32: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo 04 El siguiente programa realiza la multiplicacioacuten en base a sumasCopiar el siguiente coacutedigo y ejecuacutetelo

domainsn=integerm=integerr=integerpredicatesmult(nmr)mainclausesmult(X00)mult(X1Z)- Z=Xmult(XYZ)- Y1=Y-1mult(XY1Z1)Z=X+Z1main-write(MULTIPLICAIONES EN BASE A SUMAS )nlwrite(Ingrese Multiplicando )readint(X)nlwrite(Ingrese Multiplicador )readint(Y)nlmult(XYZ)write(El Producto es Z)nl

Ing Jennifer Rocio Pillaca De La Cruz 32 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 33: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 33 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 34: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ing Jennifer Rocio Pillaca De La Cruz 34 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 35: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplo06 programa que permite hallar la suma de un nuacutemero producto el exponencial factorial etcDomainsn=integerpredicatesnat(n)sum(nnn)prod(nnn)expo(nnn)menorigual(nn)menor(nn)min(nnn)fac(nn)for(nnn)clausesnat(0)-nat(X)- Xgt0X1=X-1nat(X1)sum(X0X)- nat(X)sum(XYZ)- Y1=Y-1sum(XY1Z1)Z=Z1+1prod(X00)- nat(X)prod(XYZ)- Y1=Y-1prod(XY1W) sum(WXZ)expo(X01)- X1=X-1nat(X1)expo(0Y0)- Y1=Y-1nat(Y1)expo(XYZ)- Y1=Y-1 expo(XY1W) prod(XWZ)menorigual(0Y)- nat(Y)menorigual(XY)- X1=X-1Y1=Y-1menorigual(X1Y1)menor(0Y)- Y1=Y-1nat(Y1)menor(XY)- X1=X-1Y1=Y-1menor(X1Y1)min(XYX)- menor(XY)min(XYY)- menor(YX)fac(01)- fac(XY)- X1=X-1fac(X1Z)prod(XZY)for(IJI)- I lt= Jfor(IJK)- IltJI1=I+1for(I1JK)goalexpo(23Z)EJERCICIOS PROPUESTOS1 Desarrolle un programa que calcule el aacuterea y el periacutemetro de un ciacuterculo rectaacutengulo triaacutengulo siguiendo un menuacute2 Desarrolle un programa que calcule lo siguiente

4 Desarrolle un programa que compare si un nuacutemero es mayor que otro utilizando 3 variables5 Desarrolle un programa que calcule lo siguiente

Ing Jennifer Rocio Pillaca De La Cruz 35 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 36: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Nota Tenga en cuenta que son 3 variables (A B C) los cuales deben ser ingresados por teclado el resultado debe ser con decimales y se debe de controlar lo siguiente

No existe divisioacuten entre ceroNo existe raiacutez cuadrada de un nuacutemero negativo

Si existen esos casos mostrar el error correspondiente

6 Mejorar el programa de nuacutemeros aleatorios de manera que ofrezca un nuacutemero miacutenimo y maacuteximo por el que el usuario se iraacute guiando hasta encontrar el nuacutemero es decir hasta adivinarlo

Nota todos los datos debe ser ingresados por teclado

Ing Jennifer Rocio Pillaca De La Cruz 36 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 37: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 6

LISTAS

Las listas son una herramienta importante en la matemaacutetica moderna y en la computacioacuten simboacutelica El objetivo aquiacute es mostrar coacutemo pueden utilizarse las listas para acrecentar la potencia y el alcance de los programas PROLOG

Definicioacuten- Una lista es una estructura que contiene un nuacutemero arbitrario de elementos Una lista en Prolog corresponde a un arreglo en los otros lenguajes de programacioacuten con la diferencia que la lista no requiere previamente conocer su longitud

La declaracioacuten de un dominio para listas se efectuacutea en la seccioacuten de dominios de la siguiente manera

lista_de_elementos = elementos

Dondeelementos- es un dominio estaacutendar o un dominio definido por el usuariolista_de_elementos- es el nombre del nuevo dominio

Ejemploslcaracteres = charlenteros = integerldatos = datosdatos = d(nombre apellido)nombre apellido = string

MAacuteS SOBRE DECLARACIOacuteN DE LISTAS

Para declarar un tipo lista enteros que consista de una lista de nuacutemeros enteros escribimos

domainslista_enteros = integer

Los elementos de una lista pueden ser a su vez listas (dando lugar a algo similar a los vectores multidimensionales de otros lenguajes de programacioacuten) La uacutenica restriccioacuten es que todos los elementos de la lista deben ser del mismo tipo Por ejemplo esta declaracioacuten

domainsmatriz = lista_enteroslista_enteros = integer

La declaracioacuten es perfectamente vaacutelida y sirve para disponer de un tipo matriz que consiste de una de listas de enteros (una matriz de enteros)

Ing Jennifer Rocio Pillaca De La Cruz 37 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 38: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Sin embargo esta declaracioacuten

domainslista_mixta = integer symbolNo es vaacutelida incluso aunque la escribamos asiacute

lista_mixta = elementoelemento = integer symbol

La forma correcta de declarar una lista que pueda contener nuacutemeros enteros y secuencias de caracteres es

domainslista_mixta = elementoelemento = i(integer) s(symbol)

Una lista de este tipo podriacutea ser esta [i(3) s(pepe) i(6)]

A su vez una lista se puede considerar de forma recursiva Es decir siempre estaacute formada por un elemento seguido de otra lista Cuando la lista tienen un soacutelo elemento podemos considerar que estaacute formada por dicho elemento y la lista vaciacutea Esta definicioacuten es muy interesante ya que su conocimiento nos permitiraacute llevar a cabo todas las operaciones que se pueden realizar sobre las listas con poco esfuerzo

Hemos de recordar que en Prolog no existen estructuras para realizar bucles luego todos los algoritmos que representemos se definiraacuten de forma recursiva El hecho de que la implementacioacuten de la lista sea tambieacuten recursiva facilita la construccioacuten de operaciones sobre la misma

1 Listas como sujetosHasta ahora hemos definido predicados que definieron a individuos simplesvaron(juan)varon(pedro)mujer(mariacutea)mujer(isabel)

Donde Juan Pedro Mariacutea Isabel son individuos particularesSin embargo en el lenguaje corriente es comuacuten la referencia a conjuntos decosas

Supongamos deseamos expresar la frase Los tomates las papas los zapallos y las coles son vegetalesUtilizando el concepto de listas el predicado vegetales se aplicariacutea a un solo sujeto la lista completa

vegetales([tomates papas zapallos coles]) Ing Jennifer Rocio Pillaca De La Cruz 38 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 39: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ejemplos de listasbull vegetales([tomates papas zapallos coles]bull arcaacutengeles([gabriel michael rafael])

bull vocales([aeo[ui]])bull listavaciacutea([])

2 Estructura de una listaUna lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes

(1) Cabeza Es el primer elemento de la lista Puede ser un aacutetomo o una lista pero a fin de cuentas es el primer elemento de la lista original

(2) Cola Es el resto de los elementos de una lista es de nuevo una lista

La cabeza y la cola de una lista se separan con el siacutembolo |Por ejemplo la lista formada por los enteros 2 5 y 7 es decir [2 5 7] se puede escribir [2| 5 7] donde la cabeza es el nuacutemero 2 y la cola es la lista [5 7]Maacutes ejemplos(1) L=[perro gato raton queso](a) cabeza= perro(b) cola=[gato raton queso](2) L=[[perro gato] [raton queso]](a) cabeza=[perro gato](b) cola=[[raton queso]](3) L=[perro](a) cabeza=perro(b) cola=[] la lista vaciacutea(4) L=[](a) cabeza= NO(b) cola=[] la lista vaciacutea

3 Listas de longitud fijaHacemos uso del patroacuten de lista Un patroacuten no es maacutes que otra lista (compuesta en su mayor parte de variables) que intentan unificar con la primera El inteacuterprete con el fin de lograr dicha unificacioacuten instancia las variables del patroacuten con los elementos de la listadomains

vegetal=Symbolpredicates

vegetales(vegetal)clauses

vegetales([tomatezanahoriaapiocol])goal

vegetales([ABCD])

Ing Jennifer Rocio Pillaca De La Cruz 39 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 40: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Vemos al realizar la consulta GOAL vegetales ([ABCD])

A = tomatesB = papasC = zapallosD = colesOtra consulta vegetales([A|B])

Continuacutee realizando las consultas hasta obtener una cola vaciacutea []

4 Listas de longitud desconocidaDada una lista de N elementos [e1e2e3 hellip eN]El primer elemento se denomina la cabeza de la lista y el resto su cola

La cola a su vez es una lista que puede dividirse nuevamente en cabeza y cola y asiacute continuando hasta llegar a la lista de un elemento cuya cola es vaciacutea

De esta manera en los casos en que la longitud de la lista es desconocida es posible utilizar un patroacuten que permita separar la cabeza y la cola este patroacuten se representa en Prolog de la siguiente manera

[Cabeza|Cola]Donde el siacutembolo | significa ldquoseguido derdquo La variable Cabeza se instancia con el primer elemento y la variable Cola se instancia con una lista formada por el resto de los elementos de la lista

Para el ejemplo anteriorCabeza = e1Cola = [e2e3 hellip eN]

5 EJERCICIOSEjercicio 01 El siguiente programa asigna una lista de valores a la variable ingresada

Ing Jennifer Rocio Pillaca De La Cruz 40 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 41: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesmostrar_lista_animalesClausesmostrar_lista_animales-asignar_animales(LA) LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo)

Tenemos el siguiente resultado

Ahora agregue el siguiente coacutedigo al programa anterior

Predicatesnondeterm mostrar_todo(lelementos)nondeterm mainClausesmostrar_todo(LA)-LA=[Cabeza|Cuerpo] Cuerpo=[]write(El uacuteltimo elemento es Cabeza) Condicion de paradamostrar_todo(LA)-LA=[Cabeza|Cuerpo]write(La Cabeza es Cabeza y el cuerpo es Cuerpo) nl mostrar_todo(Cuerpo)main-asignar_animales(LA)mostrar_todo(LA)

Consulte Goal main (noacutetese la recursividad)

Ing Jennifer Rocio Pillaca De La Cruz 41 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 42: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

VARIABLES ANOacuteNIMAS (GUIOacuteN BAJO)El guioacuten bajo es una variable anoacutenima permiten evitar mostrar los valores de las variables que ellas reemplazan pero si actuacutean haciendo uso de estas

EJEMPLO A continuacioacuten se muestra un ejemplo sobre padres con sus respectivos hijosCopie el siguiente coacutedigo

Domainsnombre = STRINGPredicatesnondeterm padre(nombre nombre)mostrar_ph(nombre nombre)Clausespadre(JoseRosa)padre(PedroManuel)padre(CarlosMaria)padre(JavierLuisa)mostrar_ph(Padre Hijo)-padre(Padre Hijo)write(Padre es padre de Hijo) nl failgoalmostrar_ph(XY)

Como se daraacute cuenta se muestra la lista de los padres con sus respectivos hijosAgregue el siguiente coacutedigo al anterior

Predicatesmostrar_padre(nombre)Clausesmostrar_padre(Padre)-padre(Padre_)write(Padre es padre) nl fail

ConsultasMostrar solo los padres

Como se podraacute ver en el coacutedigo se esta realizando la consulta utilizando el siguiente predicado padre(Padre_)

Ing Jennifer Rocio Pillaca De La Cruz 42 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 43: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

como se requiere solo el nombre del padre utilizamos el guioacuten bajo

Ejercicio 02 Predicado que devuelve el uacuteltimo elemento de la lista

PREDICATESnondeterm ultimo_lis(lis_num numero)CLAUSESultimo_lis([Elem] Elem)ultimo_lis([_|Cuer] Elem)- ultimo_lis(Cuer Elem)

Ejercicio 03 Predicado que devuelve yes cuando el dato ingresado es una lista

PREDICATESnondeterm es_lista(lis_num)CLAUSESes_lista([])es_lista([_|_])

6 Uso de la pertenencia para definir otras reglas uacutetilesConsideremos esta pequentildea base de reglas

perros(pastor_aleman [leskon koki titaacuten])perros(san_bernardo [master rigan mujamad])perros(chihuahua [figaro piojo ramiro])Para determinar la raza de determinado perro y ubicarlo como pastor alemaacuten san bernardo o chihuahua primero es necesario establecer la raza y despueacutes buscar en la lista de esa raza a ese perro

pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)

Ademaacutes podemos saber si un aacutetomo es un perro siempre tiene una raza (aunque sea corriente) asiacute que podemos definir una regla para saber si un elemento es uno de los perros que hemos definido

Ing Jennifer Rocio Pillaca De La Cruz 43 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 44: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

perro(R)-perros(_L) pertenece(RL)Con la consulta -perro(X) podemos determinar todos los perros que hemos definido

Enseguida el programa completo

perros(pastor_aleman [juli esteban pancho])perros(san_bernardo [master rigan mujamad])perros(french_poodle [figaro piojo ramiro])pertenece(EL)-L=[E|_]pertenece(E[_|T])-pertenece(ET)pastor_aleman(P)-perros(pastor_aleman L) pertenece(PL)raza(R)-perros(_L) pertenece(RL)

7 Ejercicios Propuestos71 Definir el predicado elimina si queremos eliminar un elemento de la lista- elimina(1[1234]R)R = [234]72 Uso de listas721 Elena Moacutenica Ineacutes Clara Teresa y Rosa son mujeres Agustiacuten Francisco Felipe y Bernardo son varones Escriba Escriba tal conocimiento usando listas de modo que le permita que PROLOG responda si el nombre de una persona es varoacuten o mujerGOAL mujer(elena)YesGOAL varon(francisco)Yes

722 Escriba ahora los predicados necesarios para establecer que Ud pueda introducir un nombre por el teclado y el programa deberaacute decirle si el nombre ingresado corresponde a un varoacuten o a una mujerGOAL reconoceIngrese un nombre monicamonica es mujer

723 Ahora incrementa un predicado que permita dar un mensaje que indique que no se conoce si el nombre consultado corresponde a un varoacuten a una mujerGOAL reconoceIngrese un nombre ricardoNo tenemos informacioacuten sobre Ricardo

724 Coacutemo definiriacutea el predicado pareja para determinar que posibles parejas se pueden formar entra los miembros de los conjuntos correspondientes725 Defina el predicado matrimonio que pueda listar todas las parejas posibles que puedan contraer matrimonio

Ing Jennifer Rocio Pillaca De La Cruz 44 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 45: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

KAPPA PC

El KAPPA Sistema de desarrollo de aplicaciones le permite escribir el software que simulan sistemas complejos y le proporcionan con facilidad representar conocimiento sobre ellos

KAPPA es utilizado para construir aplicaciones basadas en conocimiento sistemas que capturan el conocimiento necesario para entender alguacuten sistema complejo o dominio Cuando se construye un sistema basado en conocimiento se construye un modelo realista del sistema actual Los sistemas basados en conocimiento son usados para tareas como planeamiento diagnostico disentildeo capacitacioacuten interpretacioacuten de datos y configuracioacuten

Las bases de conocimiento de KAPPA se construyen alrededor de componentes importantes conductas y relaciones en un sistema Un candidato bueno para una base de conocimientos de KAPPA es cualquier sistema donde se entienda como interactuacutean los componentes pero donde haya demasiada complejidad predecir el comportamiento del sistema entero

Kappa proporciona una amplia gama de herramientas para construir y usar sistemas basadosen conocimiento En el sistema KAPPA

Donde los Objetos pueden ser clases o bien instancias de clases Las relaciones entre los objetos en un modelo pueden ser representadas unieacutendolos junto a una estructura llamada Jerarquiacutea

Se usa programacioacuten Orientada a Objetos dentro de KAPPA para dotar esos objetos con meacutetodos (es decir programas heredados) Una vez que se construido el objeto y los meacutetodos para una base de conocimientos se puede construir sistemas que se especifican como los objetos deben comportarse

Aplicaciones de KAPPALas aplicaciones estrictas en KAPPA pueden realizarse dos tareas importantes Ellos pueden ser

Ayudar en la toma de decisioacuten humana Ello no lo reemplaza Asiacute la aplicacioacuten que se escriba debe permitirle al usuario que entienda como un resultado o una decisioacuten propuesta fue derivada

Ser usado para aprender Un usuario puede examinar partes de un dominio que son inaccesibles en el mundo real

Ing Jennifer Rocio Pillaca De La Cruz 45 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 46: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

SISTEMA BASADOS EN CONOCIMIENTOSLas aacutereas de mayor aplicacioacuten de sistemas basados en conocimientos incluyen Diagnostico y Clasificacioacuten- Usando los sistemas observables de un funcionamiento defectuoso el sistema basado en conocimientos clasifica el problema subyacente

Disentildeo y Configuracioacuten- Usando criterios para una solucioacuten aceptable el sistema basado en conocimiento disentildea una solucioacuten para encajar el criterio

Planeamiento- El sistema basado en conocimiento planea una secuencia de acciones o eventos que encontraran las incertidumbres de muchas personas o algunas necesidades de ambos

Simulacioacuten y Control de Procesos- El sistema basado en conocimiento simula un sistema complejo indicando el estado dinaacutemico que resulte de cambios de variable de control

Razonamiento Basado en ModeloLa mayoriacutea de los primeros sistemas basados en conocimientos fueron llamados sistemas expertos disentildeados para producir soluciones computacionales a problemas que solamente el experto humano podriacutea resolverlos Estos sistemas usan reglas if-then para guardar el conocimiento de expertos humanos

Por ejemplo el sistema de diagnostico medico MYCIN usa regla if-then para representar el conocimiento de doctores quienes se especializaron en enfermedades infecciosas

Esencialmente las reglas en MYCIN relacionan siacutentomas observados a la enfermedad o infeccioacuten que podriacutea ser la causa

IFel paciente tiene dolor de cabeza y la cantidad de gloacutebulos blancos del paciente es bajaTHEel paciente debe tener meningitisEstas reglas son resuacutemenes uacutetiles del conocimiento experto pero ellos solo expresan la parte superficial del conocimiento MICYN no tiene un modelo de coacutemo causas infecciones o los siacutentomas observados

Clases e InstanciasUna clase es una coleccioacuten un grupo de instancias particulares Autos podriacutea ser una clase de los cuales AutoDeTom es una instancia Las clases y las instancias son llamadas como objetos

Una subclase es una clase que es parte de o un subconjunto de otra clase esta bajo una clase en una jerarquiacutea Sedans es una subclase Autos Parent es el nombre para una clase que esta inmediatamente a una subclase en la jerarquiacutea Autos es el padre de SedansAncestros y descendientes describen relaciones indirectas entre clases subclases e instancias Ing Jennifer Rocio Pillaca De La Cruz 46 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 47: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

EJERCICIO I Ejemplos AutoDeMary es descendiente de Autos (y Autos es el ancestro de AutoDeMary)

AtributosLos atributos pueden ser pensamientos como descripciones sobre un objeto particular Ellos adicionan detalles estructuras listas atributos o propiedades

Representando procesos Meacutetodos Funciones y ReglasUn sistema basado en conocimiento contiene tanto representacioacuten de la estructura como del proceso de dominio Los procesos de dominio son representados en tres diferentes formas Meacutetodos Funciones ReglasMeacutetodosEl primer acercamiento para presentar procesos en KAPPA involucra objetos asiacute ellos representan el comportamiento de las cosas El comportamiento es especificado creando meacutetodos Los meacutetodos son escritos en KAL (Lenguaje de programacioacuten KAPPA) y especifica como un objeto puede comportarse

FuncionesKAPPA proporciona una libreriacutea por encima de las 240 funciones que permiten manipular la base de conocimientos El rango de estas funciones van de operadores numeacutericos simples tales como ldquo+rdquo a funciones loacutegicas tales como while y complejas KAPPA especifica funciones tales como PostInputForm y ForwardChain

ReglasUna regla especifica las condiciones bajo las cuales una accioacuten particular o inferencia puede ocurrir Por ejemplo las siguientes reglas indican las condiciones bajo las cuales las bujiacuteas de un automoacutevil chispean

IFla ignicioacuten estaacute encendiday el sistema eleacutectrico estaacute bieny la condicioacuten de las bujiacuteas estaacuten bienTHElas bujiacuteas chispeanLas reglas pueden especificar complejas interacciones entre los componentes de un sistema La regla del ejemplo anterior especifica una interaccioacuten entre tres componentes de un automoacutevilla ignicioacuten el sistema eleacutectrico y las bujiacuteas

La sintaxis para meacutetodos funciones y reglas son ideacutenticas se usa la misma sintaxis para adicionar un objeto escribir un meacutetodo y crear una regla

Ing Jennifer Rocio Pillaca De La Cruz 47 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 48: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Instalacioacuten de Kappa PCINRTEFAZ DE KAPPAVENTANASCuando empieza por primera vez KAPPA se despliega la ventana principal de KAPPA con nueve iconos Cada icono representa una de las nueve ventanas de KAPPA

Object Browser Session Edit Tool KAL Interpreter KAL View Debugger Find Replace Rule Relations Rule Trace Inference Browser

EL RATOacuteNLa mayoriacutea de las operaciones en KAPPA moviendo el cursor en el objeto de la pantalla haciendo clic en el botoacuten izquierdo del ratoacuten

En KAPPA el botoacuten derecho del ratoacuten trabaja solo en dos instancias especiacuteficas Cuando usted estaacute en una ventana donde el lenguaje KAL puede ser usado en este caso haciendo clic en el botoacuten derecho se desplegara un menuacute el Menuacute de referencia de funcioacuten

LOS MENUacuteSLos menuacutes son listas de oacuterdenes de KAPPA Los menuacutes estaacuten disponibles para cada ventana de KAPPA y para los iconos de KAPPA en la ventana de herramientas (Edit Tools)

Ing Jennifer Rocio Pillaca De La Cruz 48 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 49: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

CARGANDO UNA BASE DE CONOCIMIENTOSSiempre que se cree una base de conocimientos o se haga cambios a una existente se debe grabar en un archivo Cuando se grava en una base de conocimientos en KAPPA se tienen dos opciones se puede grabar como una ARCHIVO BINARIO (bin) o como un archivo ASCII (kal)Los dos tipos de archivos no son compatibles

USANDO EL VISUALIZADOR DE OBJETOS (Object Browser)El visualizador de objetos es el meacutetodo maacutes intuitivo de interactuar con KAPPA

El visualizador de objetos inicialmente aparece una clase llamada Root (Raiz) con subclases tales como Menuacute Image KWindow y una instancia llamada Global

La Clase RaiacutezLa clase raiacutez es una clase fundamental de las cuales todas de las otras clases en KAPPA son definidas No pueden ser renombradas ni borradas

Ing Jennifer Rocio Pillaca De La Cruz 49 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 50: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

La Clase GlobalLa instancia Global es una instancia predefinida que se usa para ayudar a grabar tiempos para usar redes de objetos

La Subclase MenuacuteLa subclase menuacute es una subclase designada para almacenar imaacutegenes Las imaacutegenes son objetos graacuteficos que se usan para crear una interfaz de usuario para sus aplicaciones

La Subclase KWindowsLa subclase KWindows es una subclase designada para almacenar las definiciones de las ventanas en KAPPA Esta subclase tiene definiciones por ejemplo el color de fondo de la ventana posicioacuten de dichas ventanas las funciones de dibujo etc

USANDO EL EDITOR (Edit Tools)El editor de clases e instancias estaacute representado con iconos en la ventana de herramientas de conocimiento proporciona un medio maacutes raacutepido y maacutes eficiente para crear editar y grabar bases de conocimientos

La ventana de herramientas de conocimiento muestra iconos para cinco editores principales de KAPPA Ademaacutes muestra el nuacutemero total de iacutetems de conocimiento que actualmente tiene la aplicacioacuten

Estructura de los Cinco Editores Clases Instancias Funciones Reglas Metas

Los editores Clase e Instancias contienen otros tres editores

Atributos

Ing Jennifer Rocio Pillaca De La Cruz 50 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 51: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Opciones Editor de meacutetodosLIMITES DE VALORLos liacutemites de valor dependen del tipo de valor tales como los siguientes- Si el tipo de valor es un ldquoTextordquo los liacutemites son definidos por los valores en el campo de valores aceptables Este puede ser alguna lista de cadenas- Los valores de tipo ldquoNumeacutericordquo tienen muchos numerales miacutenimos y maacuteximos- Los valores de tipo ldquoBooleanrdquo deben ser True o False (Verdadero o Falso)- Los valores de tipo ldquoObjetordquo tienen liacutemites definidos por instancias

ValoresSe puede ingresar un valor determinado dentro de la opcioacuten Value(s) ya sea por un valor numeacuterico o una cadena de texto Ejemplo

Tipo de ValorSeleccione una de las cuatro posibilidades para dar formato al tipo de valor dentro de las opciones que tenemos

Tipo de TextoAl seleccionar el tipo de valor se puede ingresar valores posibles en la base de conocimiento para dicho atributo Ejemplo

Tipo NumeacutericoAl seleccionar el tipo de valor se puede ingresar valores maacuteximos y miacutenimos para dicho atributo Ejemplo

Ing Jennifer Rocio Pillaca De La Cruz 51 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 52: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

Tipo BooleanoAl seleccionar este tipo de valor se puede ingresar valores para tipo booleano tales como cero y uno Ejemplo

Tipo ObjetoAl seleccionar el tipo de valor se puede ingresar las clases posibles como valores en la base de conocimiento para dicho atributo Ejemplo

LABORATORIO 09

Se desea realizar un sistema esperto que ayude a decidir a una persona(Turista) del lugar a viajar tomado en cuenta el tipo de viaje cantidad disponible motivo de viaje

1 Crear la subclase Viaje y las siguientes subclases respectivamente

Ing Jennifer Rocio Pillaca De La Cruz 52 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 53: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

2 Crear las siguientes variables (Slot) en las subclases Viaje

nombre

Tipo_tourdestino values(Espantildea_Suiza_Roma_vaticano_Portuga)motivotipo

Preciocantidad

Destinolugar

Locomocioacutenlocomocioacuten

Pref_destinopreferencia

Pref_lugarciudad

3 Crear en la ventana Sessions la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 53 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 54: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

4 Ingresar las propiedades de los RadioButtonGroup

Ing Jennifer Rocio Pillaca De La Cruz 54 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 55: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

5 Crear en la ventana Sessions1 la interfaz

Ing Jennifer Rocio Pillaca De La Cruz 55 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 56: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

6 Ingresar las propiedades del Transcript

Ing Jennifer Rocio Pillaca De La Cruz 56 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 57: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

7 Crear las siguientes reglas

Regla1If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = NewYork_Mexico

Regla2If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = RioDeJaniero_Santigo_Cancuacuten

Regla3If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico

Regla4If ( Destinolugar = Ameacuterica ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 10000 )ElseTipo_tourdestino = Cusco_Mexico_Hollywood_RioDeJaniero

Regla5If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Roma_Vaticano

Regla6If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Alemania_Inglaterra_Francia

Regla7If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Monumental_Placer ) And ( Preciocantidad = 20000 )ElseTipo_tourdestino = Espantildea_Suiza

Regla8If ( Destinolugar = Europa ) And ( Tipo_tourtipo = Indiferente ) And ( Preciocantidad = 20000 )

Ing Jennifer Rocio Pillaca De La Cruz 57 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 58: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

ElseTipo_tourdestino = Espantildea_Suiza_Roma_vaticano_Portugal

Regla9If Preciocantidad lt= 5000ElseTipo_tourmotivo = visita

Regla10If Preciocantidad lt= 10000ElseTipo_tourmotivo = Monumental

Regla11If Preciocantidad lt= 15000ElseTipo_tourmotivo = Placer

Regla12If Preciocantidad gt 15000Else Tipo_tourmotivo = Monumental_Placer

8 Crear las siguientes funciones

resultado HideWindow( SESSION ) ShowWindow( Session1 ) Assert( Pref_lugar ciudad ) Assert( Precio cantidad ) Assert( Destino lugar ) Assert( Tipo_tour tipo ) Assert( Tipo_tour motivo ) ForwardChain( NULL Regla1 Regla2 Regla3 Regla4 Regla5Regla6 Regla7 Regla8 Regla9 Regla10 Regla11 Regla12 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El destino puede ser s Tipo_tourdestino ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( El motivo puede ser s Tipo_tourmotivo ) ) DisplayText( Transcript1 FormatValue( nnn ) ) DisplayText( Transcript1 FormatValue( nnnnn Que tenga un feliz viaje ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 58 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 59: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

reset

ResetValue( Destino lugar ) ResetValue( Tipo_tour tipo ) ResetValue( Precio cantidad ) ResetValue( Locomocioacuten locomocioacuten ) ResetValue( Pref_lugar ciudad ) ResetValue( Viaje Nombre )

atraacutes

HideWindow( Session1 ) ShowWindow( SESSION )

Ing Jennifer Rocio Pillaca De La Cruz 59 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 60: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

LABORATORIO 10

Se desea realizar un sistema experto para identificar un animal seguacuten el graacutefico que se tiene

Ing Jennifer Rocio Pillaca De La Cruz 60 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

No

iquestLanza chillidos

iquestEs muy grande

iquestTiene cuello largo

Supone que es una ardilla Supone que es un ratoacuten

Supone que es una jirafaiquestTiene trompa

Supone que es un elefanteiquestLe gusta estar en ele agua

Supone que es un hipopoacutetamoSupone que es un rinoceronte

No

No

No

No

Si

Si

Si

Si

Si

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 61: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

9 Crear la subclase Animal con los siguientes slots Animal

indicador (Son las respuestas de Si o No)pregunta (Son las preguntas que se hace)supone (Es la respuesta del supuesto animal que es )

10 Crear una sesioacuten por cada pregunta

Ing Jennifer Rocio Pillaca De La Cruz 61 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 62: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

11 Crear las reglas necesarias r1

If Animalpregunta = iquestEs muy grande And Animalindicador = No ThenAnimalpregunta = iquestLanza chillidosHideWindow( SESSION )ShowWindow( Session1 )

Ing Jennifer Rocio Pillaca De La Cruz 62 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 63: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

r2If Animalpregunta = iquestEs muy grande And Animalindicador = Si ThenAnimalpregunta = iquestTiene cuello largoHideWindow( SESSION )ShowWindow( Session2 )

r3If Animalpregunta = iquestLanza chillidos And Animalindicador = SiThenAnimalsupone = Supone que es un ratonHideWindow( Session1 )ShowWindow( Session5 )

r4IfAnimalpregunta = iquestLanza chillidos And Animalindicador = NoThenAnimalsupone = Supone que es una ardillaHideWindow( Session1 )ShowWindow( Session5 )

12 Crear las funciones necesarias

f1 (Siguiente de SESSION) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone) ForwardChain( NULL r1 r2 )

resultado (Siguiente de Session1) Ing Jennifer Rocio Pillaca De La Cruz 63 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados
Page 64: Guia_s de Laboratorios

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGAESCUELA DE FORMACIOacuteN PROFESIONAL DE INGENIERIacuteA DE SISTEMAS

HideWindow( SESSION ) HideWindow( Session1 ) HideWindow( Session2 ) HideWindow( Session3 ) HideWindow( Session4 ) Assert( Animalpregunta ) Assert( Animalindicador ) Assert( Animalsupone )

ForwardChain( NULL r3r4 ) ClearTranscriptImage( Transcript1 ) DisplayText( Transcript1 FormatValue( El Animal s Animalsupone ) ) DisplayText( Transcript1 FormatValue( nnn Seguacuten los datos ingresados ) )

DisplayText( Transcript1 FormatValue( nnn )) DisplayText( Transcript1 FormatValue( nnnnn Que tenga buen dia ntDate t Date( ) ntHora t Time( ) ) )

Ing Jennifer Rocio Pillaca De La Cruz 64 Lab Sistemas Expertos Ing Elinar Carrillo Riveros

  • En la presente praacutectica se presentaraacuten una serie de casos en los cuales se demostrara el uso de funciones de entrada de cadenas de caracteres (variables) y las salidas de cadenas de caracteres (variables) ademaacutes del uso especiacutefico del ldquoo loacutegicardquo en la produccioacuten de predicados