Guia_s de Laboratorios
-
Upload
flores-wilber -
Category
Documents
-
view
924 -
download
0
Transcript of 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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-