Вы находитесь на странице: 1из 107

UNIVERSIDAD NACIONAL SAN LUIS GONZAGA DE ICA

FACULTAD DE INGENIERI A DE SISTEMAS


Ao de la promocin de la industria Responsable y del Compromiso Climtico

SISTEMA EXPERTO PARA LA
RECOMENDACION DE LA COMPRA
DE UN PC - CLIPS
12/06/2014
En el siguiente documento aprenderemos las tcnicas o mtodos de pruebas
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 1

Ingeniero: Rolando, Cha vez Guille n
INTEGRANTES:
ACEVEDO TORNERO,
ALDAIR
AGUILAR RAMIREZ,
HECTOR
TASAYCO MUNAYCO, LUIS




Ciclo Acadmico: IX
Correo Corporativo FIS
20093132@sistemasunica.edu.pe
Ciclo Acadmico: IX
Correo Corporativo FIS
20094168@sistemasunica.edu.pe
Ciclo Acadmico: IX
Correo Corporativo FIS
20094168@sistemasunica.edu.pe

YARMAS MOSQUERA,
ANGEL




Ciclo Acadmico: IX
Correo Corporativo FIS
20081976@sistemasunica.edu.pe




SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 2


























DEDICATORIA
ESTE TRABAJO VA DEDICADO A
NUESTROS COMPAN EROS ESPERANDO
QUE SEA DE AYUDA PARA
INCREMENTAR SUS CONOCIMIENTOS
EN EL A REA DE SISTEMAS EXPERTOS.

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 3


INDICE
Introduccio n6
Ana lisis del Problema.7
1. Identificacio n del problema7
2. Mejor Solucio n.8
3. Fuentes de Informacio n.8
4. Descripcio n del problema.9
4.1 Mo dulo de preguntas iniciales...9
4.2 Mo dulo de preguntas comunes.10
4.3 Desvo a modulo correspondiente.11
4.3.1 PORTATILES..11
4.3.2 DOMESTICOS15
5. Conceptualizacio n..18
5.1 Conceptos que aparecen.18
5.2 Fases...18
5.3 Preguntas.18
5.4 Esquema de Preguntas.19
5.4.1 PC PARA USO PARTICULAR..20
5.4.2 PC PARA USO DOMESTICO..20
5.4.3 PC PARA NEGOCIO...20
5.4.4 PC PARA USO PROPIO (PROFESIONAL)..20
6. Tipo y Espacio de Bu squeda...21
7. Problemas con CLIPS......22
8. Programacio n CLIPS22
8.1 Comandos Ba sicos en CLIPS...22
8.2 Introduccio n de Hechos y Reglas.22
8.2.1 Hecho.22
8.2.2 Regla23
8.2.3 Hechos Ordenados..23
8.2.4 Operaciones con hechos..23
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 4

8.2.5 Variables24
8.2.6 Entrada y Salida24
9. Operadores CLIPS26
9.1 Comandos Utilizados en el problema..26
9.1.1 Operador defclass.26
9.1.2 Operador definstance.28
9.1.3 Defmessage-handler28
9.1.4 Constructor deffunction29
9.1.5 Constructor desmodule..30
9.1.6 Definicio n de plantillas31
9.1.7 Constructor defrule32
9.1.8 Constructor de hechos deffact.33
10. A rbol de Decisiones34
11. Codigo del Problema..35
12. CONCLUSIONES..105
13. BIBLIOGRAFIA106









SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 5

INDICE DE IMGENES
1. Figura1. Compras de PC.7
2. Figura2. Fuentes de Informacin.8


















SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 6

Introduccin
Se considera a alguien un experto en un problema cuando este individuo tiene conocimiento
especializado sobre dicho problema. En el rea de los (SE) a este tipo de conocimiento se le
llama conocimiento sobre el dominio. La palabra dominio se usa para enfatizar que el
conocimiento pertenece a un problema especfico.
Antes de la aparicin del ordenador, el hombre ya se preguntaba si se le arrebatara el privilegio
de razonar y pensar. En la actualidad existe un campo dentro de la inteligencia artificial al que
se le atribuye esa facultad: el de los sistemas expertos (SE). Estos sistemas tambin son
conocidos como Sistemas Basados en Conocimiento, los cuales permiten la creacin
de mquinas que razonan como el hombre, restringindose a un espacio de conocimientos
limitado. En teora pueden razonar siguiendo los pasos que seguira un experto humano
(mdico, analista, empresario, etc.) para resolver un problema concreto. Este tipo
de modelos de conocimiento por ordenador ofrece un extenso campo de posibilidades en
resolucin de problemas y en aprendizaje. Su uso se extender ampliamente en el futuro,
debido a su importante impacto sobre los negocios y la industria.








SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 7

Anlisis del Problema

1. IDENTIFICACION
En esta parte analizaremos el problema; el problema consiste en la recomendacin de la
compra de una pc, es decir cuando nosotros vamos a comprar una pc, ya sea para un negocio
o para uso domstico, el programa nos hace recomendaciones (Preguntas) como si desea la
pc para uso domstico o para un negocio, si tenemos espacio suficiente para la pc, si el
precio es importante, etc. Por ultimo sale como resultado la recomendacin que el software
nos dice que PC podemos adquirir de acuerdo a las preguntas que nos hizo.
Esta parte es importante para saber en qu consiste el problema, y pensar si es apropiado
en resolverlo con CLIPS, y encontrar fuentes de conocimiento que ayuden a resolverlo.



Figura 1. Compras de una PC



SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 8

2. MEJOR SOLUCION
Al principio se hizo un poco complicado buscar la solucin al problema, pero al final con
informacin en internet y experiencias personales al comprar una pc, pudimos resolver el
problema.


3. FUENTES DE INFORMACION
Como el tema no es sencillo, ya que necesitamos muchas lneas de cdigo para resolver el
problema, los expertos hemos sido nosotros mismos, ya que hemos llevado los cursos de
ensamblaje de computadoras, conocemos del tema.
Para la parte tcnica, hemos consultado programas parecidos, como es el caso de Sistema
experto de turismo por Barcelona. ste es parecido a nuestro tema, ya que hace muchas
preguntas para extraer informacin del ususario, y entonces llenar huecos del objeto
solucin con instancias que cumplan las condiciones que ha dicho el usuario.

Figura 2. Fuentes de Informacin






SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 9

4. DESCRIPCION DEL PROBLEMA
4.1 Modulo Preguntas iniciales
Hace un conjunto de preguntas que pretenden clasificar al usuario en cuatro categoras
posibles (domestico, autnomo, pyme y empresarial) Preguntar datos sobre el usuario:
Tipo de uso del PC

Comprobamos si es un usuario domestico
Desea el PC para su uso particular
Desea el PC pasa su casa/familia

Si es domestico nos interesa si necesita movilidad
Si es domstico en las prestaciones del equipo no han de ser muy altas
Tiene poco espacio para colocar su PC?
Desea poder mover su PC de ubicacin?
Determinamos si es una Pyme
Lo desea para su pequeo negocio?

Determinamos si es un autnomo o un profesional liberal
Es un profesional liberal/autnomo?

Si es una pyme no interesa saber la potencia que necesitan
Necesita su PC solo para tareas de oficina/contabilidad?
Desea adems usar programas especficos para la actividad de su empresa (diseo grfico,
clculo de estructuras, ...)?

Determinamos si es un PC para una empresa grande
Es el gestor de compras de una empresa grande?

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 10

Si es una empresa queremos saber para que se usara el PC y con ello determinamos su
potencia
Desea un PC para las oficinas?
Lo desea para un empleado que necesita desplazarse?
Lo desea para tareas con altas necesidades (desarrollo de soft, diseo grafico, ...)?
Lo necesita para dar servicios (conectividad, bases de datos, servidor de aplicaciones,
servidor de ficheros, ...)?

Si es un autnomo queremos saber si necesita movilidad y para que quiere usar el PC
Su trabajo le obliga a desplazarse?
Lo desea para labores de edicin y contabilidad?
Lo necesita para desarrollar su trabajo?

Saltamos al mdulo de preguntas comunes

4.2 Mdulo de preguntas comunes
Aqu se obtiene informacin comn a todas las recomendaciones
Evidentemente las preguntas que hay aqu son bastante simples necesitaremos aadir ms
cosas si queremos dar consejos mejores.

Sin identificar
Si no hemos identificado al usuario no podemos hacer mucho
Lo sentimos, pero la aplicacin no puede aconsejarle

Determinamos si quiere software libre o no
Es usted fan del software libre?

Determinamos si el dinero es un impedimento
Es el precio importante?
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 11

4.3 Desvo a modulo correspondiente
En funcin de las preguntas que hagamos y de los tipos de recomendaciones que hagamos
deberamos aadir ms reglas
a. Domsticos
b. Porttiles
c. Workstation
d. Servidores

4.3.1 PORTATILES
Mdulo de recomendacin de porttiles
Estas preguntas son especficas para determinar las caractersticas del porttil a
recomendar.
Preguntas para determinar compra de porttiles
Si el equipo es para uso domstico y va a estar siempre enchufado no importa la duracin de
la batera
"El equipo va estar casi siempre enchufado?

Determinamos si quiere DVD
Desea reproducir pelculas de DVD?

Determinamos si quiere grabadora
Desea hacer copias de seguridad en CD/DVD?

Determinamos si le gustara tener un ratn externo
Le es ms cmodo usar un ratn externo?

Si el dinero es un problema decidimos poner componentes ms asequibles

Si no son domsticos y no hay problema de dinero ponemos un DVD y una tarjeta grfica
mejor
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 12


Determinamos si le hace falta una aplicacin ofimtica
Necesita una aplicacin ofimtica?

Los usuarios no domsticos necesitan una buena batera

Los usuarios domsticos y autnomos con poco dinero solo se podrn conectar con modem
Desea poder conectarse a internet?

Los usuarios domsticos y autnomos con ms dinero pueden querer ADSL
Desea poder conectarse a internet a alta velocidad?
Desea poder conectar otros equipos?
Los usuarios empresariales pueden querer conectarse a una red
Desea poder conectar su equipo a una red?
Utilizar tecnologa inalmbrica?

Determinamos las necesidades de almacenamiento de los usuarios no domsticos
Desea tener gran capacidad de almacenamiento?
Desea tener almacenamiento porttil extra?

Los usuarios domsticos o con pocas necesidades no necesitan mucha capacidad de
almacenamiento

Determinamos s importa el peso a los usuarios no domsticos
Le gustara que el porttil tuviera poco peso?

Cuando hemos acabado pasamos a configurar el equipo

Configuracin final del porttil con la informacin recolectada
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 13


Creamos la instancia sobre la que trabajaremos

Memoria
Si el precio no importa entonces ms memoria

CPU
Si el precio no importa entonces Intel
Si las prestaciones han de ser altas ms frecuencia de reloj

Batera
Configuramos la batera
Seleccionamos todas las bateras
Si no nos importa el dinero cogemos la que dure ms
Si nos importa el dinero cogemos una que dure entre 3 y 10 horas
Si no nos importa la batera cogemos la que dure menos

Placa Base
Cogemos cualquier placa base para porttiles
Evidemente podramos haber usado el precio o las prestaciones para decidir

Software
Eleccin del software ofimtico
Si se es fan del soft. Libre o se tiene poco dinero entonces OpenOffice

Eleccin del sistema operativo
Si se es fan del soft libre o se tiene poco dinero entonces Linux

Dispositivos de salida
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 14

Eleccin del monitor
Si se quiere poco peso o importa el precio 14p, si no 15p

Tarjeta de Video
Si las necesidades son bajas o hay poco dinero 32Mb, si no 64Mb

Dispositivos de almacenamiento
Almacenamiento para porttiles
Si las necesidades son grandes 80Gb, si no 40Gb
Si importa el precio entonces el disco ms barato
Discos USB extra
Si importa el precio entonces el ms barato

Elegimos un DVD o un CDROM
La regla elige cualquiera, pero se pueden imponer ms condiciones

Dispositivos de entrada
Si se prefiere un ratn externo le ponemos un ratn para porttil

Comunicaciones
Tarjeta de red PCMCIA, Ethernet o WiFi
ADSL router o modem
Modem PCMCIA








SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 15

4.3.2 DOMESTICOS
Modulo de recomendacion de ordenadores domsticos
Estas preguntas son especficas para determinar las caractersticas del ordenador domstico a
recomendar

Preguntas para determinar compra de ordenadores domsticos

Determinamos si quiere DVD
Desea reproducir pelculas de DVD?
Desea jugar a juegos de ltima generacin?

Determinamos si quiere grabadora
Desea hacer copias de seguridad en CD/DVD?

Si el dinero es un problema decidimos poner componentes ms asequibles

Los usuarios domsticos y autnomos con poco dinero solo se podrn conectar con modem
Desea poder conectarse a internet?

Los usuarios domsticos y autnomos con ms dinero pueden querer ADSL
Desea poder conectarse a internet a alta velocidad?
Desea poder conectar otros equipos?

Los usuarios pyme necesitan ADSL
Desea poder conectarse a internet a alta velocidad?
Desea poder conectar otros equipos?

Determinamos si le hace falta una aplicacin ofimtica
Necesita una aplicacin ofimtica?

Determinamos si le hace falta una aplicacin de contabilidad si es un usuario no domestico
Necesita una aplicacin de contabilidad?

Los usuarios domsticos o con pocas necesidades no necesitan mucha capacidad de
almacenamiento

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 16

Determinamos las necesidades de almacenamiento de los usuarios no domsticos
Desea tener gran capacidad de almacenamiento?
Desea tener almacenamiento porttil extra?

Cuando hemos acabado pasamos a configurar el equipo

Configuracin final del ordenador domestico con la informacin recolectada
Configuracin del ordenador domestico

Creamos la instancia sobre la que trabajaremos

Memoria
Si el precio no importa entonces ms memoria
CPU
Si el precio no importa entonces intel
Si las prestaciones han de ser altas ms frecuencia de reloj

Placa Base
Cogemos cualquier placa base para porttiles
Evidemente podramos haber usado el precio o las prestaciones para decidir

Software
Eleccin del software ofimtico
Si se es fan del soft libre o se tiene poco dinero entonces OpenOffice

Eleccin del sistema operativo
Las pymes pueden usar Linux
Si se es fan del soft libre o se tiene poco dinero entonces Linux
Los usuarios domsticos solo usan Windows

Dispositivos de salida
Eleccin del monitor
Si importa el precio 15p, si no 17p

Tarjeta de Video
Si las necesidades son bajas o hay poco dinero 32Mb, si no 64Mb
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 17



Dispositivos de almacenamiento

Almacenamiento para domsticos
Si las necesidades son grandes 200Gb, si no 80Gb, si importa el precio entonces el disco ms
barato

Elegimos un DVD o un CDROM
La regla elige cualquiera, pero se pueden imponer ms condiciones


Comunicaciones
Tarjeta de red PCMCIA, Ethernet o WiFi

ADSL router o modem
Crea el template consejo con la solucin



















SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 18

5. CONCEPTUALIZACIN
Hay que descubrir qu elementos tiene el problema, y qu relacin hay entre ellos. Tambin
saber cmo lo hace un experto de verdad para solucionar el problema: qu conocimientos
necesita, que hiptesis maneja, qu reglas considera como sentido comn, etc.

5.1 Conceptos que aparecen
Leyendo el enunciado, una actividad puede tener:
Descripcin: nombre, tipo.
Uso
Ubicacin
Software Libre
Precio
Duracin

Las actividades pueden ser:
De comprar
El resto

El usuario tiene:
Presupuesto
Si quiere la PC para uso personal o para negocio
Gustos sobre software Libre


5.2 FASES
El problema consiste en 3 fases:
Preguntas al usuario sobre aspectos personales acerca del uso de la PC
Eleccin de Instancias (actividades) ms adecuadas
Mostrar la planificacin final


5.3 PREGUNTAS
Para saber qu clase de PC necesita el usuario:
Preguntar para qu quiere su PC Desea el PC para su uso particular? Pregunta muy
importante, ya que de ac se derivan las preguntas siguientes.

Preguntar para qu quiere su PC Desea el PC pasa su casa/familia? Esta pregunta muy
importante por si la anterior responde que no.
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 19


Preguntar para qu quiere su PC Lo desea para su pequeo negocio? Esta pregunta muy
importante por si la anterior responde que no.


Nos decidimos por estas preguntas, ya que con pocas preguntas nos permite sacar
mucha informacin.

Hemos usado el sistema de las preguntas a falta de poder hacer cosas ms complejas,
como mens grficos. Para el usuario sera ms fcil marcar en una lista las actividades
que le gustan y las que no (como una encuesta), y saltarse lo que vea poco interesante.

5.4 Esquema de Preguntas

5.4.1 PC PARA USO PARTICULAR

Desea el PC para su uso particular? (s/n) si
Tiene poco espacio para colocar su PC? (s/n) si
Desea poder mover su PC de ubicacin? (s/n) si
Es el precio importante? (s/n) si
Es usted fan del software libre? (s/n) no
Desea poder conectarse a internet? (s/n) si
El equipo va estar casi siempre enchufado? (s/n) si
Desea hacer copias de seguridad en CD/DVD? (s/n) si
Le es ms cmodo usar un ratn externo? (s/n) si
Necesita una aplicacin ofimtica? (s/n) si








5.4.2 PC PARA USO DOMESTICO

Desea el PC para su uso particular? (s/n) no
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 20

Desea el PC pasa su casa/familia? (s/n) si
Tiene poco espacio para colocar su PC? (s/n) si
Desea poder mover su PC de ubicacin? (s/n) si
Es el precio importante? (s/n) si
Es usted fan del software libre? (s/n) no
Desea poder conectarse a internet? (s/n) si
El equipo va estar casi siempre enchufado? (s/n) si
Desea hacer copias de seguridad en CD/DVD? (s/n) si
Le es ms cmodo usar un ratn externo? (s/n) si
Necesita una aplicacin ofimtica? (s/n) si

5.4.3 PC PARA NEGOCIO

Desea el PC para su uso particular? (s/n) no
Desea el PC pasa su casa/familia? (s/n) no
Lo desea para su pequeo negocio? (s/n) si
Necesita su PC solo para tareas de oficina/contabilidad? (s/n) si
Es el precio importante? (s/n) si
Es usted fan del software libre? (s/n) no
Desea poder conectarse a internet a alta velocidad? (s/n) si
Desea poder conectar otros equipos? (s/n) si
Necesita una aplicacin de contabilidad? (s/n) si
Desea hacer copias de seguridad en CD/DVD? (s/n) si
Necesita una aplicacin ofimtica? (s/n) si

5.4.4 PC PARA USO PROPIO (PROFESIONAL)

Desea el PC para su uso particular? (s/n) no
Desea el PC pasa su casa/familia? (s/n) no
Lo desea para su pequeo negocio? (s/n) no
Es un profesional liberal/autnomo? (s/n) si
Su trabajo le obliga a desplazarse? (s/n) si
Lo desea para labores de edicin y contabilidad? (s/n) si
Es el precio importante? (s/n) si
Es usted fan del software libre? (s/n) no
Desea poder conectarse a internet? (s/n) si
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 21

Le gustara que el porttil tuviera poco peso? (s/n) si
Desea hacer copias de seguridad en CD/DVD? (s/n) si
Le es ms cmodo usar un ratn externo? (s/n) si
Necesita una aplicacin ofimtica? (s/n) si

6. TIPO Y ESPACIO DE BUSQUEDA
Nuestro problema es de sntesis (no de anlisis), y se adapta perfectamente a la definicin
de resolucin constructiva: tenemos casi infinitas soluciones, y tenemos que construir una
poco a poco. Obtenemos informacin sobre unas restricciones (mediante preguntas al
usuario) y luego intentamos disear la solucin, combinando elementos (actividades) de
forma que cumplan las restricciones.
Si hubiramos usado perfiles de usuario (el tranquilo, el pijo, el culto,...) para asociar a las
actividades, el enfoque del problema podra cambiar: se podra hacer que, a partir de las
preguntas que le hacemos al usuario, el sistema detectara aproximadamente en qu perfil o
perfiles se encuentra. Entonces, la parte de las preguntas sera de anlisis, en concreto se
podra hacer con clasificacin heurstica. Pero nosotros no procesamos ni intentamos
clasificar los datos del usuario, por tanto slo hacemos sntesis.
No se trata de clasificacin heurstica porque no tenemos un conjunto de soluciones
predefinidas, ni hacemos matching con ningn patrn para clasificar las entradas.
El mecanismo que usamos para hacer la resolucin constructiva es el de proponer y aplicar,
ya que:
Tenemos mucho conocimiento sobre el dominio (todo el que nos ha dado el usuario;
para eso hacemos las preguntas).
Conocemos los componentes del problema: sabemos todos los datos de cada actividad
Conocemos las restricciones: las hemos creado a partir de la informacin que da el
usuario
Tenemos el problema descompuesto en muchas fases: poner las actividades
obligatorias, las perfectas, las que cumplen slo dos condiciones, etc.
El mtodo que usamos es el de elegir el operador correcto de un conjunto grande, en
donde estn ordenados mediante un sistema de preferencias basado en el "salience" de
las reglas de CLIPS.
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 22


7. PROBLEMAS CON CLIPS
CLIPS nos ha dado bastantes problemas:
No acepta Unicode en sus reglas
En modo interactivo no usa las funciones habituales readline() de Linux, por lo que no
se pueden usar los cursores si nos equivocamos al escribir.
Es difcil de automatizar para hacer las pruebas: no acepta parmetros y hay que hacer
trucos raros con la entrada estndar.
8. PROGRAMACION CLIPS

8.1 Comandos bsicos en CLIPS
Todos los comandos se escriben entre parntesis.
Algunos comandos pueden ejecutarse desde los Mens
- (exit) salir de CLIPS
- (clear) borra de CLIPS todos los hechos, reglas y definiciones. Equivalente a cerrar CLIPS
y abrirlo de nuevo
- (reset) pone el sistema en su estado inicial. (Borra todos los hechos; coloca un hecho
inicial (initial_fact) as como todos los que el usuario defina por defecto. Debe de
efectuarse antes de ejecutar cualquier programa.
- (run) ejecuta el programa cargado en CLIPS
- (load nombrefichero.clp)
Carga un programa CLIPS a partir del fichero nombrefichero.clp


8.2 Introduccin a los Hechos y Reglas

8.2.1 Hecho
- Es un elemento de informacin elemental
- Se almacena en la llamada lista de hechos.
- Cada hecho en la lista de hechos tiene un identificador que indica su ndice en la lista
- Hay dos tipos de hechos:
Ordenados
No ordenados.
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 23

8.2.2 Regla
- Sirven para representar el conocimiento del experto
- En general, una regla se expresa de la forma SI las condiciones son ciertas ENTONCES
haz alguna accin.


8.2.3 Hechos ordenados
- Son los formados por varios smbolos entre parntesis separados por espacios.
- Se pueden utilizar para representar:
o Un valor: (lunes)
- hoy es lunes
o Una pareja atributo-valor: (color verde)
- el color es verde
o Una tripleta atributo-objeto-valor: (hijo_de Luis Daniel)
- Luis es hijo de Daniel
- En los hechos ordenados la posicin es importante. No es lo mismo
o (hijo_de Luis Daniel) ; Luis es hijo de Daniel
o (hijo_de Daniel Luis) ; Daniel es hijo de Luis
- Los comentarios en CLIPS se escriben con punto y coma


8.2.4 Operaciones con Hechos
- Agregar un hecho
o Los hechos se agregan en CLIPS con el comando (assert)
o Ejemplo:
CLIPS> (assert (color verde))
<Fact-0>
o CLIPS responde a la agregacin de un hecho con <Fact-xx> donde xx es el ndice
numrico asignado a ese hecho
o Se pueden agregar varios hechos simultneamente haciendo por ejemplo:
(assert (sabor dulce)(sabor salado)(sabor amargo) )
- Examinar los hechos
o Para examinar todos los hechos en memoria se utiliza el comando
(facts)
o Ejemplo:
CLIPS> (facts)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 24

f-0 (color verde)
For a total of 1 fact
- Eliminar un hecho
o Los hechos se borran en CLIPS con el comando (retract)
o Ejemplo:
CLIPS> (retract 0)
o Ntese que para borrar un hecho es necesario conocer su ndice
o Puede eliminarse todos los hechos mediante (retract *)

8.2.5 Variables
- Una variable almacena informacin dinmica, esto es, los valores que toma pueden
cambiar (a diferencia de un hecho que siempre es esttico).
- Permiten la escritura de reglas ms generales y complejas.
Nombre de una variable
Se compone del smbolo ? y de uno o ms caracteres.
- Ejemplos:
?nombre ?color
Uso de las variables
- Uno de los usos ms comunes de las variables es el de tomar un valor en el antecedente
de una regla y usarlo en el consecuente.
- El proceso de tomar valores en el antecedente se llama emparejamiento de patrones.
- Las reglas se activan para todos los valores de las variables que cumplen el antecedente.



8.2.6 Entrada y Salida
Imprimir informacin
- Se utiliza: (printout dispositivo elementos_a_imprimir)
El valor de dispositivo para el monitor es t
Los elementos a imprimir se separan por espacios.
Para separar lineas se pone crlf
Ejemplo:
(defrule busca_persona
(persona ?nombre1 ?ojos1 ?pelo1) =>
(printout t ?nombre1 " tiene los ojos " ?ojos1 " y el pelo " ?pelo1 crlf)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 25

Leer informacin
- Se utiliza: (read dispositivo)
Si el dispositivo es el teclado, la lectura se hace con (read)
Ejemplo:
(defrule aguas_residuales
(tipo agua residual) =>
(printout t Est el agua turbia? (si/no))
(assert(turbia agua (read))
Para Lectura/Escritura de ficheros consultar el manual


























SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 26

9. OPERADORES DE CLIPS

9.1 Comandos utilizados en el Problema

9.1.1 Operador defclass
En la programacin orientada a objetos una clase es una plantilla que describe las
caractersticas o atributos comunes de los objetos. La plantilla de la palabra se utiliza en el
sentido de una herramienta que se utiliza para construir objetos con atributos. Cada clase
es una abstraccin de un sistema real-worls o algn otro sistema lgico que estamos
tratando de modelar.

Caractersticas de clase:
Abstraccin
Herencia
Encapsulacin
Polimorfismo
De vinculacin dinmica

El comportamiento de un objeto se define por sus mensajes manipuladores (controladores).
Un mensaje de controlador para un objeto responde a los mensajes y realiza las acciones
necesarias.

La forma general de defclass:
(defclass <class-name> (is-a <superclasses> )
(slot 1)
(slot 2)
...
(slot N))

La forma general de defclass:
Sintaxis
(defclass nombre [comentario]
(is-a <nombre superclase>)
(role concrete | abstract) [Opcional]
(pattern-match reactive | non-reactive) [Opcional]
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 27

<definicin slots> (nombre del campo)
< denificin multi-Slot> (nombre del campo multiple)
<definicin handlers> )
En cada clase se especifica
Su superclase (is-a) [es posible herencia mltiple].
Si es abstracta o concreta (puede tener instancias) (role).
Si los cambios en sus slots (Nombres del campo) pueden disparar los patrones de las
reglas (pattern-match reactive) o no (pattern-match non-reactive).
Lista de slots con sus restricciones
o Limitar el acceso al slot:
(visibility public|private),
(access read-write|read-only|initializa-only)
o Indica si crear handlers get y set para ese slot:
(create-accesor ?NONE|read|write|read-write)


EJEMPLO

(defclass ser_vivo
(is-a USER)
(role abstract)
(slot nombre (type STRING))

(defclass vegetal
(is-a ser_vivo)
(role abstract) )



(defclass animal
(is-a ser_vivo)
(role abstract)
(slot edad))


(defclass mamifero
(is-a animal)
(role abstract)
(slot num_patas (type INTEGER))
(defclass gato
(is-a animal)
(role concrete)
(slot raza (type STRING))
(slot color (type SYMBOL)))

(defclass perro
(is-a animal)
(role concrete)
(slot raza (type STRING))


SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 2

(slot color (type SYMBOL)))

(defclass hombre
(is-a animal)
(role concrete)
(slot pais (type SYMBOL))
(slot DNI (type SYMBOL)))



9.1.2 Operador definstance

Declaracin instancias iniciales: (definstances)
Instancias a crear al inicio de la ejecucin (comando (reset))
Siempre existe objeto initial-object (de clase INITIAL-OBJECT)
EJEMPLO
(definstances personas
(juan of hombre (nombre "juan")
(luis of hombre (nombre "luis")
(pablo of hombre (nombre "pablo"))

9.1.3 defmessage-handler

CLIPS le permite definir sus propios mensajes manipuladores (vase tambin el
polimorfismo). El formato general de un mensaje de controlador es el siguiente:
(defmessage-handler <class-name> <message-name> [handler type]
[optional-comment]
(<parameters>* [wildcard-parameter])
<action>*)
Tenga en cuenta que slo el valor de la ltima accin se devuelve.

Tipo de controlador dir cundo ejecutar el manejador. Los tipos de manejadores se
enumeran en el orden en que se llaman normalmente durante la ejecucin del mensaje:

_around - la creacin de ambiente para los otros manipuladores, devuelve un valor
_befora - un poco de trabajo antes de primaria, no devuelve el valor
_primary - las principales tareas de un mensaje, se devuelve un valor
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 2

_after - un poco de trabajo despus de primaria (por ejemplo, limpieza), no devuelve el
valor
Simple mensaje de controlador para agregar valores de dos objetos Number:
(defmessage-handler NUMBER + (?arg)
(+ ?self ?arg))

Definicin de handlers:
(defmessage-handler <clase> <handler> (<parametros>) <lista instrucciones>
Acceso a variables y ejecucin de handlers (mtodos):
([instancia] send <nombre handler> <paramatros>)
En slots donde se defina modificador create-accessor se crean dos handlers
get-<nombre slot>
set-<nombre slot>

([juan] send set-edad 26)
([pablo] send imprimir)
([juan] send get-nombre)

Definicin de funciones: (deffunction ....)
Divisin en mdulos: (defmodule ...))
Exportacin e importaciones de elementos: plantillas, hechos, reglas, clases, ...
Uso de factores de certidumbre asociados a reglas y hechos
Simulacin de razonamiento hacia atrs

9.1.4 Constructor deffunction
Por funcin consideramos tanto las funciones predefinidas en CLIPS como las definidas
por el usuario en este lenguaje, o las definidas en un lenguaje externo (C, FORTRAN o
ADA) y enlazados con el entorno de CLIPS. En versiones previas de CLIPS este ltimo tipo
de funciones era la nica forma de aadir funciones a CLIPS (teniendo que recompilar el
propio CLIPS con cada nueva funcin)
Para definir una funcin utilizamos la construccin (deffunction)
El valor retornado por una funcin es el resultado de evaluar la ltima sentencia

Las funciones siguen una sintaxis tipo LISP con notacin prefija: (id-fun arg1 arg2)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 3

Polimorfismo: Mediante la construccin (defgeneric) podemos sobrecargar funciones y
definir nuevos comportamientos en funcin del nmero y tipo de los argumentos.

Los elementos de una funcin son 5:
1. Nombre
2. Comentario (opcional)
3. Lista de cero o ms argumentos obligatorios
4. Unos argumentos para recibir el resto de argumentos recibidos (opcional)
5. La secuencia de acciones y expresiones que se ejecutarn


Sintaxis:
(deffunction <name> [<comment>]
(<regular-parameter>* [<wildcard-parameter>])
<action>*)

<regular-parameter> ::= <single-field-variable>
<wildcard-parameter> ::= <multifield-variable>




9.1.5 Constructor defmodule
Los mdulos se definen mediante la construccin defmodule.
La sintaxis de la definicin de un mdulo es:

(defmodule <nombre-del-modulo> [<comentario>]
<especificacin-portabilidad>*)

<especificacin-portabilidad>::= (export <port-item> ) |

(import <nombre-del-modulo> <port-item>)

< port-item >::= ?ALL | ?NONE |
<constructor-potable> ?ALL |
<constructor-potable> ?NONE |
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 4

<constructor-potable> <nombre-constructor>*

Un defmodule no puede ser redefinido o incluso suprimirse una vez que se define (con
la excepcin del mdulo principal, que puede ser redefinido una vez). La nica manera
de eliminar un mdulo es con el comando clear. Tras la puesta en marcha y despus de
una orden clara, CLIPS construye automticamente el siguiente defmodule.

9.1.6 Definicin de plantillas (deftemplate)

Consiste en una serie de campos (slots) que almacenarn datos relativos a un hecho
determinado. Dichos campos estn etiquetados, siendo innecesario introducir sus
valores en un orden predeterminado. Adems, en este tipo de estructuras es posible
introducir un valor por defecto para los campos, de forma que el usuario se evita la
necesidad de introducir todos y cada uno de los valores de los campos al afirmar un
hecho perteneciente a un tipo establecido.

La forma general de definir una plantilla es mediante la instruccin (deftemplate), cuya
sintaxis general es la siguiente:
(deftemplate <nombre de plantilla> "Comentario opcional entre comillas"
<definicin campo-1>
<definicin campo-2>
...
<definicin campo-n>
)
<definicin campo> = (Slot <nombre campo> [(type <tipo
al que pertenece> ) [default <valor por defecto>)] |
Multislot <nombre campo_mltiple> [(type
<tipo al que pertenece> ) [default <valor por defecto>)]...)

Los puntos suspensivos indican que existen otras primitivas (tambin opcionales) que se
pueden introducir al definir un campo en una plantilla.





SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 5

Ejemplo: La siguiente instruccin define una plantilla llamada 'paciente'

(deftemplate paciente
(slot nombre)
(multislot apellidos)
(slot edad)
(slot sexo)
(slot volumen_pulmonar)
)

Y esta otra instruccin sirve para introducir un hecho de tipo paciente con sus distintos
campos.

(assert (paciente
(nombreapellidos Jose Quintero Garcia)
(edad 52)
(sexo varon)
(volumen_pulmonar 20))
)

9.1.7 Constructor (defrule)

Una regla se define mediante el constructor defrule y su sintaxis es:

(defrule <identificador> [<constructor>]
[<declaracion>] ; Propiedades de la regla
<elemento-condicional>* ; Parte izquierda (LHS)
=>
<accion>*) ; Parte derecha (RHS)

La parte izquierda de una regla est formada por una serie de elementos a los que se les
llama elementos condicionales. La parte derecha contiene una lista de acciones que se
llevarn a cabo cuando en la base de afirmaciones se satisfagan los elementos
condicionales del antecedente. El smbolo => separa el antecedente del consecuente de
la regla.

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 6

9.1.8 Constructor de hechos (deffact)

Un hecho se puede afirmar de dos formas diferentes:
Con la orden (assert): Desde el entorno de CLIPS se puede afirmar un hecho
directamente con (assert (hecho-a-afirmar)), esta forma se utiliza cuando no son
muchos los hechos que queremos afirmar.
Con el constructor (deffacts): Desde un fichero texto, guardado con la
extensin .clp podemos afirmar un conjunto de hechos bajo un identificador del
constructor:


(deffact identificador "comentario"
(hecho 1)
(hecho 2)
....
(hecho n))


















SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 7


ARBOL DE DECISION
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 8

10. CODIGO DEL PROBLEMA

;;; Prototipo de Sistema Experto para la recomendacion de compra de un PC
;;; Asignatura: SISTEMAS EXPERTOS - FACULTAD DE INGENIERIA DE SISTEMAS -
UNIVERSIDAD NACIONAL SAN LUIS GONZAGA DE ICA
;;; Curso 2014 I - ICA PERU

;;; ---FIS

(defclass %3ACLIPS_TOP_LEVEL_SLOT_CLASS "Clase Falsa para guardar la informacin
de ranura de nivel superior"
(is-a USER)
(role abstract)
(single-slot Capacidad
;+ (comment "Capacidad de almacenamiento del componente en Gbytes")
(type SYMBOL)
(allowed-values 20Gb 40Gb 80Gb 160Gb 200Gb 320Gb 240Gb)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Distribucion
;+ (comment "Version del SO")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Fabricante
;+ (comment "Fabricante del componente")
(type STRING)
(default "generico")
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Tipo_monitor
;+ (comment "Tipo del monitor")
(type SYMBOL)
(allowed-values CRT LCD)
(default CRT)
;+ (cardinality 0 1)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 9

(create-accessor read-write))
(single-slot Grabador
;+ (comment "Es una unidad grabadora")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Frecuencia
;+ (comment "Frecuencia de reloj de la CPU")
(type FLOAT)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot Software
;+ (comment "Software que necesita el PC")
(type INSTANCE)
;+ (allowed-classes Soft)
(create-accessor read-write))
(single-slot Placa
;+ (comment "Placa base del PC")
(type INSTANCE)
;+ (allowed-classes Placa_base)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Procesador
;+ (comment "Tipo de procesador del PC")
(type INSTANCE)
;+ (allowed-classes CPU)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot Dispositivos_de_Almacenamiento
;+ (comment "Dispositivos de almacenamiento del PC")
(type INSTANCE)
;+ (allowed-classes Almacenamiento)
(create-accessor read-write))
(single-slot Memoria
;+ (comment "Tamao de la memoria")
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 10

(type SYMBOL)
(allowed-values 256Mb 512Mb 1Gb 2Gb 4Gb 8Gb 16Gb)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Num_puertos
;+ (comment "Numero de puertos del router")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Conector
;+ (comment "Tipo de conexion que usa el dispositivo")
(type SYMBOL)
(allowed-values USB Serie Paralelo inalambrico PS-2 IDE SCSI Serial_ATA
PCI PCMCIA)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Conectores_IDE
;+ (comment "Numero de conectores IDE")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Puertos_USB
;+ (comment "numero de puertos USB")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Puertos_Firewire
;+ (comment "Numero de puertos firewire")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Slots_PCI
;+ (comment "Numero de slots PCI")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 11

(single-slot Slots_AGP
;+ (comment "Numero de slots AGP")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Conectores_Serial_ATA
;+ (comment "Numero de conectores serial ATA")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Pulgadas
;+ (comment "Pulgadas del monitor")
(type SYMBOL)
(allowed-values 15p 17p 19p 21p 14p)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot Memoria_Video
;+ (comment "Tamao de la memoria de video")
(type SYMBOL)
(allowed-values 32Mb 64Mb 128Mb 256Mb)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot Tipo_impresora
;+ (comment "Tipo de impresora")
(type SYMBOL)
(allowed-values Inyeccion Laser)
;+ (cardinality 1 1)
(create-accessor read-write))
(multislot Dispositivos_de_Entrada
;+ (comment "Dispositivos de entrada del PC")
(type INSTANCE)
;+ (allowed-classes Entrada)
(create-accessor read-write))
(multislot Dispositivos_de_Salida
;+ (comment "Dispositivos de salida del PC")
(type INSTANCE)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 12

;+ (allowed-classes Salida)
(create-accessor read-write))
(multislot Dispositivos_de_Comunicacion
;+ (comment "Dispositivos de comunicacion del PC")
(type INSTANCE)
;+ (allowed-classes Comunicacion)
(create-accessor read-write))
(single-slot Modelo
;+ (comment "Modelo de la CPU")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Precio
;+ (comment "Precio del componente")
(type FLOAT)
;+ (cardinality 1 1)
(create-accessor read-write))
(multislot Version
;+ (comment "SOs sobre los que se ejecuta el software")
(type SYMBOL)
(allowed-values Windows Linux)
(create-accessor read-write))
(single-slot Tipo_raton
;+ (comment "Tipo de raton")
(type SYMBOL)
(allowed-values bola optico)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Programa
;+ (comment "Nombre del programa")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 13

(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot Tipo_red
;+ (comment "Tipo de tecnologia de red")
(type SYMBOL)
(allowed-values Ethernet WiFi)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Duracion
;+ (comment "Duracion de la bateria en horas")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Tipo_bateria
;+ (comment "Tipo de bateria del PC")
(type INSTANCE)
;+ (allowed-classes Bateria)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass componente "Componentes de un PC"
(is-a USER)
(role concrete)
(single-slot Precio
;+ (comment "Precio del componente")
(type FLOAT)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass Soft "Elementos Software"
(is-a componente)
(role concrete))

(defclass SO "Sistema operativo"
(is-a Soft)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 14

(role concrete)
(single-slot Distribucion
;+ (comment "Version del SO")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Linux "SO Linux"
(is-a SO)
(role concrete))

(defclass Windows "SO Windows"
(is-a SO)
(role concrete))

(defclass Aplicacion "Aplicaciones software"
(is-a Soft)
(role concrete)
(multislot Version
;+ (comment "SOs sobre los que se ejecuta el software")
(type SYMBOL)
(allowed-values Windows Linux)
(create-accessor read-write))
(single-slot Programa
;+ (comment "Nombre del programa")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Juegos "Aplicaciones ludicas"
(is-a Aplicacion)
(role concrete))

(defclass Ofimatica "Programas o suites para edicion, hojas de calculop, presentaciones,
etc"
(is-a Aplicacion)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 15

(role concrete))

(defclass Disenyo_Grafico "Aplicaciones para el diseo grafico"
(is-a Aplicacion)
(role concrete))

(defclass Base_de_Datos "SGBDs"
(is-a Aplicacion)
(role concrete))

(defclass Contabilidad "Aplicaciones de contabilidad"
(is-a Aplicacion)
(role concrete))

(defclass Hard "Elementos hardware"
(is-a componente)
(role concrete)
(single-slot Fabricante
;+ (comment "Fabricante del componente")
(type STRING)
(default "generico")
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Comunicacion "Dispositiv de comunicacionn"
(is-a Hard)
(role concrete)
(single-slot Conector
;+ (comment "Tipo de conexion que usa el dispositivo")
(type SYMBOL)
(allowed-values USB Serie Paralelo inalambrico PS-2 IDE SCSI Serial_ATA
PCI PCMCIA)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Modem "Modem telefonico"
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 16

(is-a Comunicacion)
(role concrete))

(defclass Tarjeta_red "Tarjeta de red"
(is-a Comunicacion)
(role concrete)
(single-slot Tipo_red
;+ (comment "Tipo de tecnologia de red")
(type SYMBOL)
(allowed-values Ethernet WiFi)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass ADSL "Dispositivos ADSL"
(is-a Comunicacion)
(role concrete))

(defclass Modem_ADSL "Modem ADSL"
(is-a ADSL)
(role concrete))

(defclass Router_ADSL "Router ADSL"
(is-a ADSL)
(role concrete)
(single-slot Num_puertos
;+ (comment "Numero de puertos del router")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Router "Router de red"
(is-a Comunicacion)
(role concrete)
(single-slot Num_puertos
;+ (comment "Numero de puertos del router")
(type INTEGER)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 17

;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass CPU "Cpu del PC"
(is-a Hard)
(role concrete)
(single-slot Frecuencia
;+ (comment "Frecuencia de reloj de la CPU")
(type FLOAT)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Modelo
;+ (comment "Modelo de la CPU")
(type STRING)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass CPU_portatil "CPUs para portatiles"
(is-a CPU)
(role concrete))

(defclass CPU_workstation "CPUs para workstations"
(is-a CPU)
(role concrete))

(defclass CPU_servidor "CPUs para servidores"
(is-a CPU)
(role concrete))

(defclass CPU_domestico "CPUs para PCs domesticos"
(is-a CPU)
(role concrete))

(defclass Placa_base "Placa base del PC"
(is-a Hard)
(role concrete)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 18

(single-slot Conectores_IDE
;+ (comment "Numero de conectores IDE")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Puertos_USB
;+ (comment "numero de puertos USB")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Puertos_Firewire
;+ (comment "Numero de puertos firewire")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Slots_PCI
;+ (comment "Numero de slots PCI")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Slots_AGP
;+ (comment "Numero de slots AGP")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Conectores_Serial_ATA
;+ (comment "Numero de conectores serial ATA")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write)))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 19


(defclass Salida "Dispositivos de salida"
(is-a Hard)
(role concrete))

(defclass Monitor "Monitor"
(is-a Salida)
(role concrete)
(single-slot Tipo_monitor
;+ (comment "Tipo del monitor")
(type SYMBOL)
(allowed-values CRT LCD)
(default CRT)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Pulgadas
;+ (comment "Pulgadas del monitor")
(type SYMBOL)
(allowed-values 15p 17p 19p 21p 14p)
;+ (cardinality 1 1)
(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass Tarjeta_video "Tarjeta de video"
(is-a Salida)
(role concrete)
(single-slot Memoria_Video
;+ (comment "Tamao de la memoria de video")
(type SYMBOL)
(allowed-values 32Mb 64Mb 128Mb 256Mb)
;+ (cardinality 1 1)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 20

(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass Tarjeta_sonido "Tarjeta de sonido"
(is-a Salida)
(role concrete))

(defclass Altavoces "Altavoces"
(is-a Salida)
(role concrete))

(defclass Impresora "Impresora"
(is-a Salida)
(role concrete)
(single-slot Conector
;+ (comment "Tipo de conexion que usa el dispositivo")
(type SYMBOL)
(allowed-values USB Serie Paralelo inalambrico PS-2 IDE SCSI Serial_ATA
PCI PCMCIA)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Tipo_impresora
;+ (comment "Tipo de impresora")
(type SYMBOL)
(allowed-values Inyeccion Laser)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass Entrada "Dispositivos de entrada"
(is-a Hard)
(role concrete)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 21

(single-slot Conector
;+ (comment "Tipo de conexion que usa el dispositivo")
(type SYMBOL)
(allowed-values USB Serie Paralelo inalambrico PS-2 IDE SCSI Serial_ATA
PCI PCMCIA)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Teclado "Teclado"
(is-a Entrada)
(role concrete))

(defclass Scanner "Scanner"
(is-a Entrada)
(role concrete))

(defclass Raton "raton"
(is-a Entrada)
(role concrete)
(single-slot Tipo_raton
;+ (comment "Tipo de raton")
(type SYMBOL)
(allowed-values bola optico)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass Tableta_Grafica "Tableta grafica"
(is-a Entrada)
(role concrete))

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 22

(defclass Almacenamiento "Dispositivos de almacenamiento"
(is-a Hard)
(role concrete)
(single-slot Conector
;+ (comment "Tipo de conexion que usa el dispositivo")
(type SYMBOL)
(allowed-values USB Serie Paralelo inalambrico PS-2 IDE SCSI Serial_ATA
PCI PCMCIA)
;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Para_portatil
;+ (comment "Es para portatil?")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 1 1)
(create-accessor read-write)))

(defclass DVD "DVD"
(is-a Almacenamiento)
(role concrete)
(single-slot Grabador
;+ (comment "Es una unidad grabadora")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass CDROM "CDROM"
(is-a Almacenamiento)
(role concrete)
(single-slot Grabador
;+ (comment "Es una unidad grabadora")
(type SYMBOL)
(allowed-values Si No)
;+ (cardinality 0 1)
(create-accessor read-write)))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 23


(defclass Disco_flexible "Disquetera"
(is-a Almacenamiento)
(role concrete))

(defclass Disco_duro "Disco duro"
(is-a Almacenamiento)
(role concrete)
(single-slot Capacidad
;+ (comment "Capacidad de almacenamiento del componente en Gbytes")
(type SYMBOL)
(allowed-values 20Gb 40Gb 80Gb 160Gb 200Gb 320Gb 240Gb)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Bateria "Bateria para portatil"
(is-a Hard)
(role concrete)
(single-slot Duracion
;+ (comment "Duracion de la bateria en horas")
(type INTEGER)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass PC "Clase generica para elaborar la recomendacion"
(is-a USER)
(role concrete)
(multislot Software
;+ (comment "Software que necesita el PC")
(type INSTANCE)
;+ (allowed-classes Soft)
(create-accessor read-write))
(single-slot Placa
;+ (comment "Placa base del PC")
(type INSTANCE)
;+ (allowed-classes Placa_base)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 24

;+ (cardinality 0 1)
(create-accessor read-write))
(single-slot Procesador
;+ (comment "Tipo de procesador del PC")
(type INSTANCE)
;+ (allowed-classes CPU)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot Dispositivos_de_Almacenamiento
;+ (comment "Dispositivos de almacenamiento del PC")
(type INSTANCE)
;+ (allowed-classes Almacenamiento)
(create-accessor read-write))
(single-slot Memoria
;+ (comment "Tamao de la memoria")
(type SYMBOL)
(allowed-values 256Mb 512Mb 1Gb 2Gb 4Gb 8Gb 16Gb)
;+ (cardinality 0 1)
(create-accessor read-write))
(multislot Dispositivos_de_Entrada
;+ (comment "Dispositivos de entrada del PC")
(type INSTANCE)
;+ (allowed-classes Entrada)
(create-accessor read-write))
(multislot Dispositivos_de_Salida
;+ (comment "Dispositivos de salida del PC")
(type INSTANCE)
;+ (allowed-classes Salida)
(create-accessor read-write))
(multislot Dispositivos_de_Comunicacion
;+ (comment "Dispositivos de comunicacion del PC")
(type INSTANCE)
;+ (allowed-classes Comunicacion)
(create-accessor read-write)))

(defclass Portatil "PC portatil"
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 25

(is-a PC)
(role concrete)
(single-slot Tipo_bateria
;+ (comment "Tipo de bateria del PC")
(type INSTANCE)
;+ (allowed-classes Bateria)
;+ (cardinality 0 1)
(create-accessor read-write)))

(defclass Servidor "Servidor"
(is-a PC)
(role concrete))

(defclass Sobremesa
(is-a PC)
(role concrete))

(defclass Workstation "Estacion de trabajo"
(is-a Sobremesa)
(role concrete))

(defclass Domestico "PC domestico"
(is-a Sobremesa)
(role concrete))

(definstances compra
([ia04052q-prot_Instance_0] of Ofimatica

(Precio 0.0)
(Programa "OpenOffice")
(Version Windows Linux))

([ia04052q-prot_Instance_100] of CPU_domestico

(Fabricante "Intel")
(Frecuencia 2.4)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 26

(Modelo "Celeron")
(Precio 50.0))

([ia04052q-prot_Instance_10000] of Tarjeta_red

(Conector PCMCIA)
(Fabricante "generico")
(Precio 60.0)
(Tipo_red WiFi))

([ia04052q-prot_Instance_10002] of Tarjeta_red

(Conector PCI)
(Fabricante "generico")
(Precio 50.0)
(Tipo_red WiFi))

([ia04052q-prot_Instance_10003] of Bateria

(Duracion 8)
(Fabricante "generico")
(Precio 200.0))

([ia04052q-prot_Instance_10004] of Bateria

(Duracion 10)
(Fabricante "generico")
(Precio 400.0))

([ia04052q-prot_Instance_10005] of Disco_duro

(Capacidad 200Gb)
(Conector Serial_ATA)
(Fabricante "IBM")
(Para_portatil No)
(Precio 120.0))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 27


([ia04052q-prot_Instance_101] of CPU_domestico

(Fabricante "Intel")
(Frecuencia 2.6)
(Modelo "Celeron")
(Precio 70.0))

([ia04052q-prot_Instance_102] of CPU_portatil

(Fabricante "Intel")
(Frecuencia 2.4)
(Modelo "Mobile")
(Precio 80.0))

([ia04052q-prot_Instance_103] of CPU_portatil

(Fabricante "AMD")
(Frecuencia 2.6)
(Modelo "Mobile-Athlon")
(Precio 80.0))

([ia04052q-prot_Instance_2] of Bateria

(Duracion 3)
(Fabricante "generico")
(Precio 100.0))

([ia04052q-prot_Instance_20000] of Disco_flexible

(Fabricante "generico")
(Para_portatil Si)
(Precio 20.0))

([ia04052q-prot_Instance_20001] of Modem

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 28

(Conector PCMCIA)
(Fabricante "generico")
(Precio 40.0))

([ia04052q-prot_Instance_20002] of Monitor

(Fabricante "generico")
(Para_portatil Si)
(Precio 300.0)
(Pulgadas 15p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_20005] of Monitor

(Fabricante "generico")
(Para_portatil Si)
(Precio 200.0)
(Pulgadas 14p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_20006] of DVD

(Conector IDE)
(Fabricante "generico")
(Grabador no)
(Para_portatil Si)
(Precio 100.0))

([ia04052q-prot_Instance_20007] of DVD

(Conector IDE)
(Fabricante "generico")
(Grabador si)
(Para_portatil Si)
(Precio 150.0))

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 29

([ia04052q-prot_Instance_20008] of Teclado

(Conector USB)
(Fabricante "generico")
(Precio 30.0))

([ia04052q-prot_Instance_20009] of Raton

(Conector USB)
(Fabricante "generico")
(Para_portatil Si)
(Precio 30.0)
(Tipo_raton optico))

([ia04052q-prot_Instance_20010] of CDROM

(Conector IDE)
(Fabricante "generico")
(Grabador si)
(Para_portatil Si)
(Precio 50.0))

([ia04052q-prot_Instance_20011] of CDROM

(Conector IDE)
(Fabricante "Sony")
(Grabador si)
(Para_portatil No)
(Precio 40.0))

([ia04052q-prot_Instance_20012] of CDROM

(Conector IDE)
(Fabricante "generico")
(Grabador no)
(Para_portatil Si)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 30

(Precio 30.0))

([ia04052q-prot_Instance_20013] of Tarjeta_sonido

(Fabricante "generico")
(Precio 70.0))

([ia04052q-prot_Instance_20014] of Tarjeta_video

(Fabricante "ATI-mobile")
(Memoria_Video 32Mb)
(Para_portatil Si)
(Precio 100.0))

([ia04052q-prot_Instance_20015] of Tarjeta_video

(Fabricante "ATI-mobile")
(Memoria_Video 64Mb)
(Para_portatil Si)
(Precio 150.0))

([ia04052q-prot_Instance_20016] of Monitor

(Fabricante "Sony")
(Para_portatil No)
(Precio 1000.0)
(Pulgadas 21p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_20017] of Monitor

(Fabricante "Sony")
(Para_portatil No)
(Precio 300.0)
(Pulgadas 17p)
(Tipo_monitor LCD))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 31


([ia04052q-prot_Instance_20018] of Monitor

(Fabricante "Sony")
(Para_portatil No)
(Precio 250.0)
(Pulgadas 15p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_20019] of Modem

(Conector PCI)
(Fabricante "generico")
(Precio 20.0))

([ia04052q-prot_Instance_20020] of Tarjeta_red

(Conector PCMCIA)
(Fabricante "generico")
(Precio 50.0)
(Tipo_red Ethernet))

([ia04052q-prot_Instance_20021] of Modem_ADSL

(Conector USB)
(Fabricante "generico")
(Precio 50.0))

([ia04052q-prot_Instance_20022] of Router

(Fabricante "generico")
(Num_puertos 4)
(Precio 100.0))

([ia04052q-prot_Instance_20023] of Placa_base

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 32

(Conectores_IDE 2)
(Conectores_Serial_ATA 1)
(Fabricante "generico")
(Para_portatil Si)
(Precio 200.0)
(Puertos_Firewire 0)
(Puertos_USB 2)
(Slots_AGP 1)
(Slots_PCI 2))

([ia04052q-prot_Instance_3] of Disco_duro

(Capacidad 40Gb)
(Conector IDE)
(Fabricante "Seagate")
(Para_portatil Si)
(Precio 200.0))

([ia04052q-prot_Instance_37] of CPU_domestico

(Fabricante "Intel")
(Frecuencia 2.8)
(Modelo "Pentium")
(Precio 250.0))

([ia04052q-prot_Instance_38] of CPU_domestico

(Fabricante "Intel")
(Frecuencia 3.0)
(Modelo "Pentium")
(Precio 500.0))

([ia04052q-prot_Instance_39] of CPU_domestico

(Fabricante "intel")
(Frecuencia 3.2)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 33

(Modelo "Pentium")
(Precio 750.0))

([ia04052q-prot_Instance_41] of CPU_servidor

(Fabricante "Intel")
(Frecuencia 3.4)
(Modelo "Pentium Xeon")
(Precio 1200.0))

([ia04052q-prot_Instance_42] of CPU_servidor

(Fabricante "Intel")
(Frecuencia 3.2)
(Modelo "Pentium Xeon")
(Precio 1000.0))

([ia04052q-prot_Instance_43] of CPU_servidor

(Fabricante "Intel")
(Frecuencia 3.6)
(Modelo "Pentium Xeon")
(Precio 1600.0))

([ia04052q-prot_Instance_44] of CPU_domestico

(Fabricante "AMD")
(Frecuencia 2.8)
(Modelo "Athlon")
(Precio 100.0))

([ia04052q-prot_Instance_45] of CPU_domestico

(Fabricante "AMD")
(Frecuencia 3.0)
(Modelo "Athlon")
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 34

(Precio 200.0))

([ia04052q-prot_Instance_46] of CPU_domestico

(Fabricante "AMD")
(Frecuencia 3.2)
(Modelo "Athlon")
(Precio 300.0))

([ia04052q-prot_Instance_47] of CPU_servidor

(Fabricante "AMD")
(Frecuencia 3.2)
(Modelo "Opteron")
(Precio 600.0))

([ia04052q-prot_Instance_48] of CPU_servidor

(Fabricante "AMD")
(Frecuencia 3.4)
(Modelo "Opteron")
(Precio 800.0))

([ia04052q-prot_Instance_49] of CPU_servidor

(Fabricante "AMD")
(Frecuencia 3.6)
(Modelo "Opteron")
(Precio 1000.0))

([ia04052q-prot_Instance_51] of Placa_base

(Conectores_IDE 1)
(Conectores_Serial_ATA 2)
(Fabricante "ASUS")
(Para_portatil No)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 35

(Precio 100.0)
(Puertos_Firewire 0)
(Puertos_USB 8)
(Slots_AGP 1)
(Slots_PCI 3))

([ia04052q-prot_Instance_52] of Monitor

(Fabricante "Sony")
(Para_portatil No)
(Precio 500.0)
(Pulgadas 19p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_53] of Monitor

(Fabricante "LG")
(Para_portatil No)
(Precio 200.0)
(Pulgadas 15p)
(Tipo_monitor LCD))

([ia04052q-prot_Instance_54] of Tarjeta_video

(Fabricante "nVidia")
(Memoria_Video 128Mb)
(Para_portatil No)
(Precio 150.0))

([ia04052q-prot_Instance_55] of Tarjeta_video

(Fabricante "nVidia")
(Memoria_Video 64Mb)
(Para_portatil No)
(Precio 100.0))

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 36

([ia04052q-prot_Instance_56] of Tarjeta_video

(Fabricante "ATI")
(Memoria_Video 64Mb)
(Para_portatil No)
(Precio 75.0))

([ia04052q-prot_Instance_57] of Tarjeta_video

(Fabricante "ATI")
(Memoria_Video 128Mb)
(Para_portatil No)
(Precio 100.0))

([ia04052q-prot_Instance_58] of Tarjeta_sonido

(Fabricante "Creative")
(Precio 50.0))

([ia04052q-prot_Instance_59] of DVD

(Conector IDE)
(Fabricante "LG")
(Grabador no)
(Para_portatil No)
(Precio 25.0))

([ia04052q-prot_Instance_60] of DVD

(Conector IDE)
(Fabricante "LG")
(Grabador si)
(Para_portatil No)
(Precio 75.0))

([ia04052q-prot_Instance_61] of Disco_flexible
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 37


(Fabricante "generico")
(Para_portatil No)
(Precio 15.0))

([ia04052q-prot_Instance_62] of Disco_duro

(Capacidad 160Gb)
(Conector Serial_ATA)
(Fabricante "Seagate")
(Para_portatil No)
(Precio 100.0))

([ia04052q-prot_Instance_63] of Disco_duro

(Capacidad 80Gb)
(Conector IDE)
(Fabricante "Seagate")
(Para_portatil Si)
(Precio 60.0))

([ia04052q-prot_Instance_100] of Disco_duro

(Capacidad 80Gb)
(Conector IDE)
(Fabricante "Seagate")
(Para_portatil No)
(Precio 40.0))

([ia04052q-prot_Instance_64] of Linux

(Distribucion "RedHat Enterprise")
(Precio 100.0))

([ia04052q-prot_Instance_68] of Linux

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 38

(Distribucion "Debian")
(Precio 5.0))

([ia04052q-prot_Instance_69] of Linux

(Distribucion "Mandrake")
(Precio 50.0))

([ia04052q-prot_Instance_70] of Linux

(Distribucion "Fedora Core")
(Precio 0.0))

([ia04052q-prot_Instance_71] of Linux

(Distribucion "Suse")
(Precio 50.0))

([ia04052q-prot_Instance_72] of Altavoces

(Fabricante "generico")
(Precio 10.0))

([ia04052q-prot_Instance_73] of Impresora

(Conector USB)
(Fabricante "HP")
(Precio 300.0)
(Tipo_impresora Laser))

([ia04052q-prot_Instance_74] of Impresora

(Conector USB)
(Fabricante "Canon")
(Precio 120.0)
(Tipo_impresora Inyeccion))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 39


([ia04052q-prot_Instance_75] of Impresora

(Conector USB)
(Fabricante "Epson")
(Precio 90.0)
(Tipo_impresora Inyeccion))

([ia04052q-prot_Instance_76] of Impresora

(Conector USB)
(Fabricante "HP")
(Precio 100.0)
(Tipo_impresora Inyeccion))

([ia04052q-prot_Instance_77] of Tarjeta_red

(Conector PCI)
(Fabricante "generico")
(Precio 25.0)
(Tipo_red Ethernet))

([ia04052q-prot_Instance_78] of Modem

(Conector USB)
(Fabricante "3com")
(Precio 50.0))

([ia04052q-prot_Instance_79] of Teclado

(Conector inalambrico)
(Fabricante "Microsoft")
(Precio 90.0))

([ia04052q-prot_Instance_80] of Scanner

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 40

(Conector USB)
(Fabricante "Canon")
(Precio 60.0))

([ia04052q-prot_Instance_81] of Disco_duro

(Capacidad 20Gb)
(Conector USB)
(Fabricante "LG")
(Para_portatil Si)
(Precio 120.0))

([ia04052q-prot_Instance_87] of CPU_portatil

(Fabricante "Intel")
(Frecuencia 2.6)
(Modelo "Mobile")
(Precio 100.0))

([ia04052q-prot_Instance_88] of CPU_workstation

(Fabricante "AMD")
(Frecuencia 3.2)
(Modelo "Athlon64")
(Precio 200.0))

([ia04052q-prot_Instance_89] of Router_ADSL

(Conector inalambrico)
(Fabricante "3Com")
(Num_puertos 4)
(Precio 90.0))

([ia04052q-prot_Instance_90] of Raton

(Conector inalambrico)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 41

(Fabricante "Microsoft")
(Para_portatil No)
(Precio 50.0)
(Tipo_raton optico))

([ia04052q-prot_Instance_92] of CDROM

(Conector IDE)
(Fabricante "Sony")
(Grabador no)
(Para_portatil No)
(Precio 25.0))

([ia04052q-prot_Instance_93] of Juegos

(Precio 50.0)
(Programa "Quake III")
(Version Windows))

([ia04052q-prot_Instance_95] of Ofimatica

(Precio 300.0)
(Programa "Microsoft Office")
(Version Windows))

([ia04052q-prot_Instance_96] of Disenyo_Grafico

(Precio 600.0)
(Programa "Photoshop")
(Version Windows))

([ia04052q-prot_Instance_97] of Base_de_Datos

(Precio 3000.0)
(Programa "Oracle 10i")
(Version Windows Linux))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 42


([ia04052q-prot_Instance_98] of Base_de_Datos

(Precio 0.0)
(Programa "MySQL")
(Version Windows Linux))

([ia04052q-prot_Instance_99] of CPU_portatil

(Fabricante "AMD")
(Frecuencia 2.4)
(Modelo "Mobile-Athlon")
(Precio 60.0))

([SO_Windows] of Windows

(Distribucion "WinXP")
(Precio 120.0))
)


;;; --- REGLAS
(defmodule MAIN (export ?ALL))

;;; ----------------
;;; Message handler para imprimir el resultado

;;; Recorre todos los elementos del slot que recibe como parametro
(deffunction imprime-todo (?v)
(if (> (length$ ?v) 0) then
(loop-for-count (?i 1 (length ?v))
(send (nth$ ?i ?v) print)
(printout t crlf)
)
)
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 43


;;; Message handler especifico par portatiles
;;; Llama al message handler del padre y luego imprime
;;; el slot bateria
(defmessage-handler Portatil imprime primary ()
(call-next-handler)
(printout t "Bateria: " crlf)
(send ?self:Tipo_bateria print)
(printout t crlf)
)

;;; Message handler para la clase PC,
;;; imprime todos los slots de la clase
(defmessage-handler PC imprime primary ()
(printout t "Procesador: " crlf)
(send ?self:Procesador print)
(printout t crlf)
(printout t "Placa Base: " crlf)
(send ?self:Placa print)
(printout t crlf)
(printout t "Memoria: " ?self:Memoria crlf crlf)
(printout t "Software: " crlf)
(imprime-todo ?self:Software)
(printout t "Dispositivos de almacenamiento: " crlf)
(imprime-todo ?self:Dispositivos_de_Almacenamiento)
(printout t "Dispositivos de entrada: " crlf)
(imprime-todo ?self:Dispositivos_de_Entrada)
(printout t "Dispositivos de salida:" crlf)
(imprime-todo ?self:Dispositivos_de_Salida)
(printout t "Dispositivos de comunicacion: " crlf)
(imprime-todo ?self:Dispositivos_de_Comunicacion)
)

;;; ----------------------------------------------------------
;;; Template del resultado
(deftemplate consejo "Lista de PCs que cumplen las caracteristicas deseadas"
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 44

(slot PC)
)

;;;-----------------------------------
;;; Funciones para preguntar cosas

;;; Obtiene una respuesta de entre un conjunto de respuestas posibles
(deffunction ask-question (?question $?allowed-values)
(printout t ?question)
(bind ?answer (read))
(while (not (member ?answer ?allowed-values)) do
(printout t ?question)
(bind ?answer (read))
)
?answer)

;;; Hace una pregunta a la que hay que responder si o no
(deffunction si-o-no-p (?question)
(bind ?response (ask-question ?question si no s n))
(if (or (eq ?response si) (eq ?response s))
then TRUE
else FALSE))

;;; ---------------------------------
;;; Otras funciones

;;; Halla la instancia con el minimo valor para un slot
;;; El primer parametro es la instancia
;;; El segundo parametro es el metodo que accede al slot
;;; El tercer parametro es el valor con el que inicializar la variable que busca
(deffunction minimum-slot (?li ?sl ?init)
(bind ?min ?init)
(loop-for-count (?i 1 (length ?li))
(bind ?v (send (nth$ ?i ?li) ?sl))
(if (< ?v ?min)
then
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 45

(bind ?min ?v)
(bind ?ins (nth$ ?i ?li))
)
)
(return ?ins)
)

;;; Halla la instancia con el maximo valor para un slot
;;; El primer parametro es la instancia
;;; El segundo parametro es el metodo que accede al slot
;;; El tercer parametro es el valor con el que inicializar la variable que busca
(deffunction maximum-slot (?li ?sl ?init)
(bind ?max ?init)
(loop-for-count (?i 1 (length ?li))
(bind ?v (send (nth$ ?i ?li) ?sl))
(if (> ?v ?max)
then
(bind ?max ?v)
(bind ?ins (nth$ ?i ?li))
)
)
(return ?ins)
)


;;;-----------------------
;;;---- REGLAS

(defrule presentacion "regla que presenta al sistema"
(declare (salience 10))
=>
(printout t "------------------------------" crlf)
(printout t "------ Sistema de Compra Para la recomendacin de una PC -----" crlf)
(printout t "------------------------------" crlf)
(printout t crlf)
(focus preguntas-determinar-usuario )
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 46

)

(defrule resultado-consejo "Regla salida de consejo"
(declare (salience 10))
(consejo (PC ?r))
=>
(printout t "---------------------------------" crlf)
(printout t "El PC que mejor se adapta a sus necesidades es: " crlf)
(printout t crlf (class ?r) crlf crlf)
(send ?r imprime)
(printout t crlf)
(halt)
)



;;; ----- Modulo Preguntas iniciales
;;; Hace un conjunto de preguntas que pretenden clasificar al usuario
;;; en cuatro categorias posibles (domestico, autonomo, pime y empresarial)
;;; Ademas recoge informacion particular de cada tipo
(defmodule preguntas-determinar-usuario "Modulo de preguntas tipo de usuario"
(import MAIN ?ALL)
(export ?ALL))

;;; Template que almacena el tipo de usuario
(deftemplate tipo-uso "tipo de uso del PC"
(slot uso)
)

;;; Iniciamos el sistema con un tipo de uso desconocido
(deffacts tipo-usuario
(tipo-uso (uso desconocido))
)


;;; Comprobamos si es un usario domestico
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 47

(defrule determinar-tipo-PC-1
?u <-(tipo-uso (uso desconocido))
=>
(if (si-o-no-p "Desea el PC para su uso particular? (s/n) ")
then
(modify ?u (uso domestico))
else
(if (si-o-no-p "Desea el PC pasa su casa/familia? (s/n) ")
then
(modify ?u (uso domestico))
)
)
)

;;; Si es domestico nos interesa si necesita movilidad
;;; Si es domestico el las prestaciones del equipo no han de ser muy altas
(defrule determinar-tipo-PC-2
(tipo-uso (uso domestico))
=>
(if (si-o-no-p "Tiene poco espacio para colocar su PC? (s/n) ")
then
(if (si-o-no-p "Desea poder mover su PC de ubicacion? (s/n) ")
then
(assert (movilidad))
)
)
(assert (prestaciones bajas))
)

;;; Determinamos si es una Pyme
(defrule determinar-tipo-PC-3
?u <- (tipo-uso (uso desconocido))
=>
(if (si-o-no-p "Lo desea para su pequeo negocio? (s/n) ")
then
(modify ?u (uso pyme))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 48

)
)

;;; Determinamos si es un autonomo o un profesional liberal
(defrule determinar-tipo-PC-4
?u <- (tipo-uso (uso desconocido))
=>
(if (si-o-no-p "Es un profesional liberal/autonomo? (s/n) ")
then
(modify ?u (uso autonomo))
)
)

;;; Si es una pyme no interesa saber la potencia que necesitan
(defrule determinar-tipo-PC-5
(tipo-uso (uso pyme))
=>
(if (si-o-no-p "Necesita su PC solo para tareas de oficina/contabilidad? (s/n) ")
then
(assert (prestaciones bajas))
else
(if (si-o-no-p "Desea ademas usar programas especificos para la actividad de su
empresa (diseo grafico, calculo de estructuras, ...)? (s/n) ")
then
(assert (prestaciones altas))
else
(assert (prestaciones bajas))
)
)
)

;;; Determinamos si es un PC para una empresa grande
(defrule determinar-tipo-PC-6
?u <- (tipo-uso (uso desconocido))
=>
(if (si-o-no-p "Es el gestor de compras de una empresa grande? (s/n) ")
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 49

then
(modify ?u (uso empresarial))
)
)

;;; Si es una empresa queremos saber para que se usara el PC y con ello
;;; determinamos su potencia
(defrule determinar-tipo-PC-7
(tipo-uso (uso empresarial))
=>
(if (si-o-no-p "Desea un PC para las oficinas? (s/n) ")
then
(assert (oficinas))
(assert (prestaciones bajas))
else
(if (si-o-no-p "Lo desea para un empleado que necesita desplazarse? (s/n) ")
then
(assert (movilidad))
(assert (prestaciones bajas))
else
(if (si-o-no-p "Lo desea para tareas con altas necesidades (desarrollo de soft,
diseo grafico, ...)? (s/n) ")
then
(assert (tareas-complejas))
(assert (prestaciones altas))
else
(if (si-o-no-p "Lo necesita para dar servicios (conectividad, bases de datos,
servidor de aplicaciones, servidor de ficheros, ...)? (s/n) ")
then
(assert (servicios))
(assert (prestaciones altas))
)
)
)
)
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 50


;;; Si es un autonomo queremos saber si necesita movilidad y para que
;;; quiere usar el PC
(defrule determinar-tipo-PC-8
(tipo-uso (uso autonomo))
=>
(if (si-o-no-p "Su trabajo le obliga a desplazarse? (s/n) ")
then
(assert (movilidad))
)
(if (si-o-no-p "Lo desea para labores de edicion y contabilidad? (s/n) ")
then
(assert (prestaciones bajas))
else
(if (si-o-no-p "Lo necesita para desarrollar su trabajo? (s/n) ")
then
(assert (prestaciones altas))
else
(assert (prestaciones bajas))
)
)
)

;;; Saltamos al modulo de preguntas comunes
(defrule a-preguntas-comunes
(declare (salience -1))
=>
(focus preguntas-comunes)
)


;;; Modulo de preguntas comunes
;;; Aqui se obtiene informacion comun a todas las recomendaciones
;;; Evidentemente las preguntas que hay aqui son bastante simples
;;; necesitareis aadir mas cosas si quereis dar consejos mejores
(defmodule preguntas-comunes "preguntas comunes a todos los usuarios"
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 51

(import preguntas-determinar-usuario ?ALL)
(export ?ALL)
)

;;; --- Sin identificar
;;; Si no hemos identificado al usuario no podemos hacer mucho
(defrule no-hay-consejo
(declare (salience 20))
(tipo-uso (uso desconocido))
=>
(printout t "---------------------------------" crlf)
(printout t "Lo sentimos, pero la aplicacion no puede aconsejarle" crlf)
(printout t crlf)
(halt)
)

;;; Determinamos si quiere software libre o no
(defrule software-libre
(declare (salience 10))
=>
(if (si-o-no-p "Es usted fan del software libre? (s/n) ")
then
(assert (software-libre Si))
else
(assert (software-libre No))
)
)

;;; Determinamos si el dinero es un impedimento
(defrule importancia-del-precio
(declare (salience 10))
(not (precio ?p))
=>
(if (si-o-no-p "Es el precio importante? (s/n) ")
then
(assert (precio Si))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 52

else
(assert (precio No))
)
)

;;; Desvio a modulo correspondiente
;;; En funcion de las preguntas que hagais y de los tipos de recomendaciones
;;; que hagais debereis aadir mas reglas

;;; --- Domesticos
(defrule a-modulo-domestico-1
(tipo-uso (uso domestico))
(not (movilidad))
=>
(focus compra-de-domestico)
)

(defrule a-modulo-domestico-2
(tipo-uso (uso pyme))
(prestaciones bajas)
=>
(focus compra-de-domestico)
)

;;; --- Portatiles

(defrule a-modulo-portatil-1
(movilidad)
=>
(focus compra-de-portatil)
)

;;; --- Workstations
(defrule a-modulo-oficina-workstation
(not (movilidad))
(prestaciones altas)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 53

=>
(focus compra-de-oficina-workstation)
)


;;; --- Servidores
(defrule a-modulo-servidor
(servicios)
=>
(focus compra-de-servidor)
)


;;;--------------------- PORTATILES
;;; Modulo de recomendacion de portatiles
;;; Estas preguntas son especificas para determinar las caracteristicas del
;;; portatil a recomendar

(defmodule compra-de-portatil "preguntas para determinar compra de portatiles"
(import MAIN ?ALL)
(import preguntas-determinar-usuario ?ALL)
(import preguntas-comunes ?ALL)
(export ?ALL)
)

;;; Si el equipo es para uso domestico y va a estar siempre
;;; enchufado no importa la duracion de la bateria
(defrule domesticos-bateria
(tipo-uso (uso domestico))
=>
(if (si-o-no-p "El equipo va estar casi siempre enchufado? (s/n) ")
then
(assert (duracion-bateria no-critico))
else
(assert (duracion-bateria critico))
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 54

)

;;; Determinamos si quiere DVD
(defrule domesticos-DVD
(tipo-uso (uso domestico))
(precio No)
=>
(if (si-o-no-p "Desea reproducir peliculas de DVD? (s/n) ")
then
(assert (almacenamiento DVD))
else
(assert (almacenamiento CDROM))
)
)

;;; Determinamos si quiere grabadora
(defrule grabadora
=>
(if (si-o-no-p "Desea hacer copias de seguridad en CD/DVD? (s/n) ")
then
(assert (grabacion Si))
else
(assert (grabacion No))
)
)

;;; Determinamos si le gustaria tener un raton externo
(defrule raton-externo
=>
(if (si-o-no-p "Le es mas comodo usar un raton externo? (s/n) ")
then
(assert (raton-externo Si))
else
(assert (raton-externo No))
)
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 55


;;; Si el dinero es un problema decidimos poner componentes
;;; mas asequibles
(defrule todos-restriccion-de-precio
(precio Si)
=>
(assert (almacenamiento CDROM))
(assert (graficos bajo))
(assert (memoria minimo))
)

;;; Si no son domesticos y no hay problema de dinero ponemos un DVD
;;; y una tarjeta grafica mejor
(defrule resto-DVD
(tipo-uso (uso ~domestico))
(precio No)
=>
(assert (almacenamiento DVD))
(assert (graficos alto))
)

;;; Determinamos si le hace falta una aplicacion ofimatica
(defrule ofimatica
=>
(if (si-o-no-p "Necesita una aplicacion ofimatica? (s/n) ")
then
(assert (soft ofimatica))
)
)

;;; Los usuarios no domesticos necesitan una buena bateria
(defrule resto-bateria
(tipo-uso (uso ~domestico))
=>
(assert (duracion-bateria critico))
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 56


;;; Los usuarios domesticos y autonomos con poco dinero solo se
;;; podran conectar con modem
(defrule modem
(precio Si)
(tipo-uso (uso domestico|autonomo))
=>
(if (si-o-no-p "Desea poder conectarse a internet? (s/n) ")
then
(assert (comunicacion modem))
)
)

;;; Los usuarios domesticos y autonomos con mas dinero pueden querer
;;; ADSL
(defrule ADSL
(precio No)
(tipo-uso (uso domestico|autonomo))
=>
(if (si-o-no-p "Desea poder conectarse a internet a alta velocidad? (s/n) ")
then
(if (si-o-no-p "Desea poder conectar otros equipos? (s/n) ")
then
(assert (ADSL router))
else
(assert (ADSL modem))
)
)
)

;;; Los usuarios empresariales pueden querer conectarse a una red
(defrule WIFI-o-Ethernet
(tipo-uso (uso empresarial))
=>
(if (si-o-no-p "Desea poder conectar su equipo a una red? (s/n) ")
then
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 57

(if (si-o-no-p "Utilizara tecnologia inalambrica? (s/n) ")
then
(assert (red WIFI))
else
(assert (red Ethernet))
)
)
)

;;; Determinamos las necesidades de almacenamiento de los usuarios no
;;; domesticos
(defrule no-domestico-almacenamiento-portatil
(tipo-uso (uso ~domestico))
(prestaciones altas)
=>
(if (si-o-no-p "Desea tener gran capacidad de almacenamiento? (s/n) ")
then
(assert (almacenamiento-disco-duro alto))
else
(assert (almacenamiento-disco-duro bajo))
)
(if (si-o-no-p "Desea tener almacenamiento portatil extra? (s/n) ")
then
(assert (almacenamiento-externo Si))
)
)

;;; Los usuarios domesticos o con pocas necesidades no necesitan mucha capacidad
;;; de almacenamiento
(defrule domestico-prestaciones-bajas-almacenamiento-portatil
(or (tipo-uso (uso domestico))
(prestaciones bajas))
=>
(assert (almacenamiento-disco-duro bajo))
)

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 58

;;; Determinamos si importa el peso a los usuarios no domesticos
(defrule importancia-del-peso
(tipo-uso (uso ~domestico))
=>
(if (si-o-no-p "Le gustaria que el portatil tuviera poco peso? (s/n) ")
then
(assert (peso Si))
else
(assert (peso No))
)
)

;;; Cuando hemos acabado pasamos a configurar el equipo
(defrule todo-determinado
(declare (salience -1))
=>
(focus configurar-portatil)
)

;;; Configuracion final del portatil con la informacion recolectada
(defmodule configurar-portatil "configuracion del portatil"
(import MAIN ?ALL)
(import compra-de-portatil ?ALL)
(import preguntas-determinar-usuario ?ALL)
(export ?ALL)
)

;;; Creamos la instancia sobre la que trabajaremos
(defrule crea-instancia-inicial
(declare (salience 10))
=>
(make-instance [p] of Portatil)
)

;;; ----- Memoria
;;; Si el precio no importa entonces mas memoria
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 59

(defrule configura-memoria
?x <- (object (is-a Portatil))
(precio ?p)
=>
(switch ?p
(case No then (send ?x put-Memoria 512Mb))
(case Si then (send ?x put-Memoria 256Mb))
)
)

;;; ------ CPU
;;; Si el precio no importa entonces intel
;;; Si las prestaciones han de ser altas mas frecuencia de reloj
(defrule configura-CPU
?x <- (object (is-a Portatil))
(precio ?p)
(prestaciones ?pr)
=>
(if (eq ?p No) then
(bind ?cpu (find-all-instances ((?ins CPU_portatil)) (eq ?ins:Fabricante "Intel")))
else
(bind ?cpu (find-all-instances ((?ins CPU_portatil)) (eq ?ins:Fabricante "AMD")))
)
(if (eq ?pr altas) then
(send ?x put-Procesador (maximum-slot ?cpu get-Frecuencia 0))
else
(send ?x put-Procesador (minimum-slot ?cpu get-Frecuencia 5))
)
)

;;; ------ Bateria

;;; Configuramos la bateria
(defrule configura-bateria
?x <- (object (is-a Portatil))
(duracion-bateria ?b)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 60

(precio ?p)
=>
;;; Seleccionamos todas las baterias
(bind ?bt (find-all-instances ((?ins Bateria)) TRUE))
(switch ?b
(case critico then
(switch ?p
(case No then
;;; Si no nos importa el dinero cogemos la que dure mas
(send ?x put-Tipo_bateria (maximum-slot ?bt get-Duracion 0))
)
(case Si then
;;; Si nos importa el dinero cogemos una que dure entre 3 y 10 horas
(send ?x put-Tipo_bateria
(find-instance ((?ins Bateria))
(and (> ?ins:Duracion 3) (< ?ins:Duracion 10))
)
)
)
)
)
(case no-critico then
;;; Si no nos importa la bateria cogemos la que dure menos
(send ?x put-Tipo_bateria (minimum-slot ?bt get-Duracion 20))
)
)
)

;;; --------- Placa Base
;;; Cogemos cualquier placa base para portatiles
;;; Evidemente podriamos haber usado el precio o las
;;; prestaciones para decidir
(defrule placa-base-portatil
?x <- (object (is-a Portatil))
=>
(send ?x put-Placa
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 61

(find-instance ((?ins Placa_base)) (eq ?ins:Para_portatil Si)))

)

;;; ---------- Software
;;; Eleccion del software ofimatico
(defrule software-ofimatico
?x <- (object (is-a Portatil))
(soft ofimatica)
(software-libre ?sl)
(precio ?p)
=>
;;; Si se es fan del soft libre o se tiene poco dinero entonces OpenOffice
(if (or (eq ?sl Si) (eq ?p Si)) then
(slot-insert$ ?x Software 1 (find-instance ((?ins Ofimatica)) (= ?ins:Precio 0)))
else
(slot-insert$ ?x Software 1 (find-instance ((?ins Ofimatica)) (> ?ins:Precio 0)))
)
)

;;; Eleccion del sistema operativo
(defrule sistema-operativo
?x <- (object (is-a Portatil))
(software-libre ?sl)
(precio ?p)
=>
;;; Si se es fan del soft libre o se tiene poco dinero entonces Linux
(if (or (eq ?sl Si) (eq ?p Si)) then
(slot-insert$ ?x Software 1 (find-instance ((?ins Linux)) (= ?ins:Precio 0)))
else
(slot-insert$ ?x Software 1 (find-instance ((?ins Windows)) (> ?ins:Precio 0)))
)
)

;;; -------- Dispositivos de salida

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 62

;;; Eleccion del monitor
(defrule monitor
?x <- (object (is-a Portatil))
(peso ?ps)
(precio ?p)
=>
;;; Si se quiere poco peso o importa el precio 14p, si no 15p
(if (or (eq ?ps Si) (eq ?p Si)) then
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Monitor))
(and (eq ?ins:Pulgadas 14p) (eq ?ins:Para_portatil Si))))
else
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Monitor))
(and (eq ?ins:Pulgadas 15p) (eq ?ins:Para_portatil Si))))
)
)

;;; Tarjeta de Video
(defrule tarjeta-grafica
?x <- (object (is-a Portatil))
(graficos ?g)
(precio ?p)
=>
;;; Si las necesidades son bajas o hay poco dinero 32Mb, si no 64Mb
(if (or (eq ?g bajo) (eq ?p Si)) then
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Tarjeta_video))
(and (eq ?ins:Memoria_Video 32Mb) (eq ?ins:Para_portatil Si))))
else
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Tarjeta_video))
(and (eq ?ins:Memoria_Video 64Mb) (eq ?ins:Para_portatil Si))))
)
)

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 63


;;; -------- Dispositivos de almacenamiento

;;; Almacenamiento para portatiles
;;; Si las necesidades son grandes 80Gb, si no 40Gb
;;; si importa el precio entonces el disco mas barato
(defrule almacenamiento
?x <- (object (is-a Portatil))
(almacenamiento-disco-duro ?al)
(precio ?p)
=>
(switch ?al
(case alto then (bind ?c 80Gb))
(case bajo then (bind ?c 40Gb))
)
(bind ?hd (find-all-instances ((?ins Disco_duro))
(and (eq ?ins:Conector IDE) (eq ?ins:Para_portatil Si) (eq ?ins:Capacidad ?c))))
(if (eq ?p No) then
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (maximum-slot ?hd get-Precio 0))
else
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (minimum-slot ?hd get-
Precio 1000))
)
)

;;; Discos USB extra
;;; Si importa el precio entonces el mas barato
(defrule almacenamiento-externo
?x <- (object (is-a Portatil))
(almacenamiento-externo Si)
(precio ?p)
=>
(bind ?hd (find-all-instances ((?ins Disco_duro)) (eq ?ins:Conector USB)))
(if (eq ?p No) then
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (maximum-slot ?hd get-Precio 0))
else
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 64

(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (minimum-slot ?hd get-
Precio 1000))
)
)

;;; Elegimos un DVD o un CDROM
;;; La regla elige cualquiera, pero se pueden imponer mas condiciones
(defrule CDROM-o-DVD
?x <- (object (is-a Portatil))
(almacenamiento ?al)
(grabacion ?g)
=>
(if (eq ?al DVD) then
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins DVD)) (eq ?ins:Grabador ?g))
)
else
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins CDROM)) (eq ?ins:Grabador ?g))
)
)

)

;;; Escogemos una disquetera si no nos importa el peso
(defrule configura-disquetera
?x <- (object (is-a Portatil))
(peso No)
=>
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins Disco_flexible)) (eq ?ins:Para_portatil Si)))
)

;;; ------- Dispositivos de entrada
;;; Si se prefiere un raton externo le ponemos un raton para portatil
(defrule configura-raton-externo
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 65

?x <- (object (is-a Portatil))
(raton-externo Si)
=>
(slot-insert$ ?x Dispositivos_de_Entrada 1
(find-instance ((?ins Raton)) (eq ?ins:Para_portatil Si)))
)

;;; -------- Comunicaciones
;;; Tarjeta de red PCMCIA, ethernet o WiFi
(defrule configura-tarjeta-red
?x <- (object (is-a Portatil))
(red ?r)
=>
(switch ?r
(case WIFI then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Tarjeta_red))
(and (eq ?ins:Conector PCMCIA) (eq ?ins:Tipo_red WiFi)))))
(case Ethernet then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Tarjeta_red))
(and (eq ?ins:Conector PCMCIA) (eq ?ins:Tipo_red Ethernet)))))
)
)

;;; ADSL router o modem
(defrule configura-ADSL
?x <- (object (is-a Portatil))
(ADSL ?r)
=>
(switch ?r
(case router then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Router_ADSL)) TRUE)))
(case modem then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 66

(find-instance ((?ins Modem_ADSL)) TRUE)))
)
)

;;; Modem PCMCIA
(defrule configura-modem
?x <- (object (is-a Portatil))
(comunicacion modem)
=>
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Modem)) (eq ?ins:Conector PCMCIA)))
)


;;; ------------

;;; Crea el template consejo con la solucion
(defrule solucion-portatil
(declare (salience -1))
?x <- (object (is-a Portatil))
=>
(assert (consejo (PC ?x)))
)

;;;--------------------- DOMESTICOS
;;; Modulo de recomendacion de ordenadores domesticos
;;; Estas preguntas son especificas para determinar las caracteristicas del
;;; ordenador domestico a recomendar

(defmodule compra-de-domestico "preguntas para determinar compra de ordenadores
domesticos"
(import MAIN ?ALL)
(import preguntas-determinar-usuario ?ALL)
(import preguntas-comunes ?ALL)
(export ?ALL)
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 67


;;; Determinamos si quiere DVD
(defrule domesticos-DVD
(tipo-uso (uso domestico))
(precio No)
=>
(if (si-o-no-p "Desea reproducir peliculas de DVD? (s/n) ")
then
(assert (almacenamiento DVD))
else
(assert (almacenamiento CDROM))
)
)

;;; Determinamos si quiere DVD
(defrule domesticos-DVD
(tipo-uso (uso domestico))
(precio No)
=>
(if (si-o-no-p "Desea jugar a juegos de ultima generacion? (s/n) ")
then
(assert (graficos alto))
else
(assert (graficos bajo))
)
)

;;; Determinamos si quiere grabadora
(defrule grabadora
=>
(if (si-o-no-p "Desea hacer copias de seguridad en CD/DVD? (s/n) ")
then
(assert (grabacion Si))
else
(assert (grabacion No))
)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 68

)

;;; Si el dinero es un problema decidimos poner componentes
;;; mas asequibles
(defrule todos-restriccion-de-precio
(precio Si)
=>
(assert (almacenamiento CDROM))
(assert (graficos bajo))
(assert (memoria minimo))
)

;;; Los usuarios domesticos y autonomos con poco dinero solo se
;;; podran conectar con modem
(defrule modem
(precio Si)
(tipo-uso (uso domestico|autonomo))
=>
(if (si-o-no-p "Desea poder conectarse a internet? (s/n) ")
then
(assert (comunicacion modem))
)
)

;;; Los usuarios domesticos y autonomos con mas dinero pueden querer
;;; ADSL
(defrule ADSL-1
(precio No)
(tipo-uso (uso domestico|autonomo))
=>
(if (si-o-no-p "Desea poder conectarse a internet a alta velocidad? (s/n) ")
then
(if (si-o-no-p "Desea poder conectar otros equipos? (s/n) ")
then
(assert (ADSL router))
else
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 69

(assert (ADSL modem))
)
)
)

;;; Los usuarios pyme necesitan ADSL
(defrule ADSL-2
(tipo-uso (uso pyme))
=>
(if (si-o-no-p "Desea poder conectarse a internet a alta velocidad? (s/n) ")
then
(if (si-o-no-p "Desea poder conectar otros equipos? (s/n) ")
then
(assert (ADSL router))
else
(assert (ADSL modem))
)
)
)

;;; Determinamos si le hace falta una aplicacion ofimatica
(defrule ofimatica
=>
(if (si-o-no-p "Necesita una aplicacion ofimatica? (s/n) ")
then
(assert (soft ofimatica))
)
)


;;; Determinamos si le hace falta una aplicacion de contabilidad
;;; si es un usuario no domestico
(defrule contabilidad
(tipo-uso (uso ~domestico))
=>
(if (si-o-no-p "Necesita una aplicacion de contabilidad? (s/n) ")
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 70

then
(assert (soft contabilidad))
)
)


;;; Los usuarios domesticos o con pocas necesidades no necesitan mucha capacidad
;;; de almacenamiento
(defrule domestico-prestaciones-bajas-almacenamiento
(or (tipo-uso (uso domestico))
(prestaciones bajas))
=>
(assert (almacenamiento-disco-duro bajo))
)

;;; Determinamos las necesidades de almacenamiento de los usuarios no
;;; domesticos
(defrule no-domestico-almacenamiento
(tipo-uso (uso ~domestico))
(prestaciones altas)
=>
(if (si-o-no-p "Desea tener gran capacidad de almacenamiento? (s/n) ")
then
(assert (almacenamiento-disco-duro alto))
else
(assert (almacenamiento-disco-duro bajo))
)
(if (si-o-no-p "Desea tener almacenamiento portatil extra? (s/n) ")
then
(assert (almacenamiento-externo Si))
)
)

;;; Cuando hemos acabado pasamos a configurar el equipo
(defrule todo-determinado
(declare (salience -1))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 71

=>
(focus configurar-domestico)
)

;;; Configuracion final del ordenador domestico con la informacion recolectada
(defmodule configurar-domestico "configuracion del ordenador domestico"
(import MAIN ?ALL)
(import compra-de-domestico ?ALL)
(import preguntas-determinar-usuario ?ALL)
(export ?ALL)
)

;;; Creamos la instancia sobre la que trabajaremos
(defrule crea-instancia-inicial
(declare (salience 10))
=>
(make-instance [p] of Domestico)
)

;;; ----- Memoria
;;; Si el precio no importa entonces mas memoria
(defrule configura-memoria
?x <- (object (is-a Domestico))
(precio ?p)
=>
(switch ?p
(case No then (send ?x put-Memoria 512Mb))
(case Si then (send ?x put-Memoria 256Mb))
)
)

;;; ------ CPU
;;; Si el precio no importa entonces intel
;;; Si las prestaciones han de ser altas mas frecuencia de reloj
(defrule configura-CPU
?x <- (object (is-a Domestico))
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 72

(precio ?p)
(prestaciones ?pr)
=>
(if (eq ?p No) then
(bind ?cpu (find-all-instances ((?ins CPU_domestico)) (eq ?ins:Fabricante "Intel")))
else
(bind ?cpu (find-all-instances ((?ins CPU_domestico)) (eq ?ins:Fabricante "AMD")))
)
(if (eq ?pr altas) then
(send ?x put-Procesador (maximum-slot ?cpu get-Frecuencia 0))
else
(send ?x put-Procesador (minimum-slot ?cpu get-Frecuencia 5))
)
)



;;; --------- Placa Base
;;; Cogemos cualquier placa base para portatiles
;;; Evidemente podriamos haber usado el precio o las
;;; prestaciones para decidir
(defrule placa-base-portatil
?x <- (object (is-a Domestico))
=>
(send ?x put-Placa
(find-instance ((?ins Placa_base)) (eq ?ins:Para_portatil No)))

)

;;; ---------- Software
;;; Eleccion del software ofimatico
(defrule software-ofimatico
?x <- (object (is-a Domestico))
(soft ofimatica)
(software-libre ?sl)
(precio ?p)
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 73

=>
;;; Si se es fan del soft libre o se tiene poco dinero entonces OpenOffice
(if (or (eq ?sl Si) (eq ?p Si)) then
(slot-insert$ ?x Software 1 (find-instance ((?ins Ofimatica)) (= ?ins:Precio 0)))
else
(slot-insert$ ?x Software 1 (find-instance ((?ins Ofimatica)) (> ?ins:Precio 0)))
)
)

;;; Eleccion del sistema operativo
(defrule sistema-operativo
?x <- (object (is-a Domestico))
(software-libre ?sl)
(precio ?p)
(uso ?u)
=>
(if (eq ?u pyme) then ;;; Las pymes pueden usar linux
;;; Si se es fan del soft libre o se tiene poco dinero entonces Linux
(if (or (eq ?sl Si) (eq ?p Si)) then
(slot-insert$ ?x Software 1 (find-instance ((?ins Linux)) (= ?ins:Precio 0)))
else
(slot-insert$ ?x Software 1 (find-instance ((?ins Windows)) (> ?ins:Precio 0)))
)
else ;;; Los usuarios domesticos solo usan Windows
(slot-insert$ ?x Software 1 (find-instance ((?ins Windows)) (> ?ins:Precio 0)))
)
)

;;; -------- Dispositivos de salida

;;; Eleccion del monitor
(defrule monitor
?x <- (object (is-a Domestico))
(precio ?p)
=>
;;; Si importa el precio 15p, si no 17p
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 74

(if (eq ?p Si) then
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Monitor))
(and (eq ?ins:Pulgadas 15p) (eq ?ins:Para_portatil No))))
else
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Monitor))
(and (eq ?ins:Pulgadas 17p) (eq ?ins:Para_portatil No))))
)
)

;;; Tarjeta de Video
(defrule tarjeta-grafica
?x <- (object (is-a Domestico))
(graficos ?g)
(precio ?p)
=>
;;; Si las necesidades son bajas o hay poco dinero 32Mb, si no 64Mb
(if (or (eq ?g bajo) (eq ?p Si)) then
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Tarjeta_video))
(and (eq ?ins:Memoria_Video 32Mb) (eq ?ins:Para_portatil No))))
else
(slot-insert$ ?x Dispositivos_de_Salida 1
(find-instance ((?ins Tarjeta_video))
(and (eq ?ins:Memoria_Video 64Mb) (eq ?ins:Para_portatil No))))
)
)


;;; -------- Dispositivos de almacenamiento

;;; Almacenamiento para domesticos
;;; Si las necesidades son grandes 200Gb, si no 80Gb
;;; si importa el precio entonces el disco mas barato
(defrule almacenamiento
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 75

?x <- (object (is-a Domestico))
(almacenamiento-disco-duro ?al)
(precio ?p)
=>
(switch ?al
(case alto then (bind ?c 200Gb))
(case bajo then (bind ?c 80Gb))
)
(bind ?hd (find-all-instances ((?ins Disco_duro))
(and (eq ?ins:Conector IDE) (eq ?ins:Para_portatil No) (eq ?ins:Capacidad ?c))))
(if (eq ?p No) then
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (maximum-slot ?hd get-Precio 0))
else
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1 (minimum-slot ?hd get-
Precio 1000))
)
)


;;; Elegimos un DVD o un CDROM
;;; La regla elige cualquiera, pero se pueden imponer mas condiciones
(defrule CDROM-o-DVD
?x <- (object (is-a Domestico))
(almacenamiento ?al)
(grabacion ?g)
=>
(if (eq ?al DVD) then
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins DVD)) (eq ?ins:Grabador ?g))
)
else
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins CDROM)) (eq ?ins:Grabador ?g))
)
)

SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 76

)

;;; Escogemos una disquetera
(defrule configura-disquetera
?x <- (object (is-a Domestico))
(almacenamiento disquetera)
=>
(slot-insert$ ?x Dispositivos_de_Almacenamiento 1
(find-instance ((?ins Disco_flexible)) (eq ?ins:Para_portatil No)))
)


;;; -------- Comunicaciones
;;; Tarjeta de red PCMCIA, ethernet o WiFi
(defrule configura-tarjeta-red
?x <- (object (is-a Domestico))
(red ?r)
=>
(switch ?r
(case WIFI then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Tarjeta_red))
(and (eq ?ins:Conector PCI) (eq ?ins:Tipo_red WiFi)))))
(case Ethernet then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Tarjeta_red))
(and (eq ?ins:Conector PCI) (eq ?ins:Tipo_red Ethernet)))))
)
)

;;; ADSL router o modem
(defrule configura-ADSL
?x <- (object (is-a Domestico))
(ADSL ?r)
=>
(switch ?r
SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 77

(case router then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Router_ADSL)) TRUE)))
(case modem then
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Modem_ADSL)) TRUE)))
)
)

;;; Modem
(defrule configura-modem
?x <- (object (is-a Domestico))
(comunicacion modem)
=>
(slot-insert$ ?x Dispositivos_de_Comunicacion 1
(find-instance ((?ins Modem)) (eq ?ins:Conector USB)))
)


;;; ------------

;;; Crea el template consejo con la solucion
(defrule solucion-domestico
(declare (salience -1))
?x <- (object (is-a Domestico))
=>
(assert (consejo (PC ?x)))
)








SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 78

11. CONCLUSIONES

Actualmente el duro, difcil y cambiante mercado competitivo se vuelve ms complejo
por la gran diversidad de informacin que se ven obligados a almacenar y analizar, razn
por la cual las empresas se ven en la necesidad de recurrir a poderosas y/o robustas
herramientas o sistemas que les sirvan de soporte a la hora de tomar decisiones. De esta
forma estos inteligentes, precisos y eficientes sistemas son adoptados por ms
organizaciones, en las cuales se convierten y/o transforman en una importante
estrategia de negocio.
Por otra parte es importante mencionar que estos seguirn siendo usados en los todos
y cada una de las reas y/o campos donde los expertos humanos sean escasos. Por
consecuencia de lo anterior estos sistemas son utilizados por personas no
especializadas, por lo cual el uso frecuente de los (SE) les produce y/o genera
conocimiento a los usuarios.





















SISTEMA EXPERTO PARA LA RECOMENDACION DE LA COMPRA DE UN PC - CLIPS

SISTEMAS EXPERTOS 79

12. BIBLIOGRAFA

http://home.agh.edu.pl/~ligeza/wiki/clips:object
http://www.uco.es/~i82coory/p10.htm
http://www.uco.es/~i82coory/p9.htm
http://www.csie.ntu.edu.tw/~sylee/courses/clips/bpg/node10.1.html
http://www.uco.es/users/sventura/misc/TutorialCLIPS/Plantillas.htm
http://www.uco.es/~i82coory/p7.htm
http://www.uco.es/~i82coory/p6.htm
http://home.agh.edu.pl/~ligeza/wiki/clips:object
http://www.danielclemente.com/apuntes/ia/pr2/docums/docu.html
http://www.monografias.com/trabajos16/sistemas-expertos/sistemas-
expertos.shtml#CONCLU#ixzz34FB4IZ29

Вам также может понравиться