INMOBILIARIA INTELIGENTE Aurora Avilés López-Sepúlveda Alberto Gordillo Muñoz Máster en Ingeniería Telemática Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) Máster en Ingeniería Telemática Universidad Carlos III de Madrid Av. de la Universidad 30 28911 Leganés (Madrid) 100039673@alumnos.uc3m.es 100029771@alumnos.uc3m.es RESUMEN Este trabajo se basa en tiene como objetivo la creación de un sistema experto [2] en CLIPS. El sistema se encarga de ayudar a los usuarios que desean adquirir una casa, ya sea para vivir habitualmente o para pasar sus vacaciones. En función de las necesidades de cada usuario, el sistema selecciona un conjunto de casas que hacen que la tarea de encontrar la vivienda adecuada sea más fácil. A continuación, se expondrá una breve introducción a CLIPS, la descripción del problema a resolver, las decisiones tomadas para realizar el diseño, implementación y por último se muestran unos ejemplos de simulación. Categorías I.2.1 Applications and Expert Systems Términos Generales CLIPS probablemente es el sistema experto más ampliamente usado debido a que es rápido, eficiente y gratuito. Aunque ahora es de dominio público, aún es actualizado y mantenido por su autor original, Gary Riley. Características principales Las características principales de CLIPS [8] son: Representación del Conocimiento: CLIPS permite manejar una amplia variedad de conocimiento, soportando tres paradigmas de programación: el declarativo, el imperativo, y el orientado a objetos. La programación lógica basada en reglas permite que el conocimiento sea representado como reglas heurísticas que especifican las acciones a ser ejecutadas dada una situación. La POO permite modelar sistemas complejos como componentes modulares. La programación imperativa permite ejecutar algoritmos de la misma manera que en C, Java, LISP y otros lenguajes. Design, Human Factors, Languages. Palabras clave Sistema experto, CLIPS, vivienda. 1. INTRODUCCIÓN CLIPS [4] es una herramienta que provee un ambiente de desarrollo para la producción y ejecución de sistemas expertos. Fue creado a partir de 1984, en el Lyndon B. Johnson Space Center de la NASA. Los fondos cesaron a principios de los años 1990, y hubo un mandato de la NASA para comprar software comercial. CLIPS es un acrónimo de C Language Integrated Production System (Sistema de Producción Integrado en Lenguaje C). En la actualidad, entre los paradigmas de programación que soporta CLIPS se encuentran la Programación lógica, la Programación imperativa y la Programación Orientada a Objetos. Portabilidad: CLIPS fue escrito en C con el fin de hacerlo más portable y rápido, y ha sido instalado en diversos sistemas operativos (Windows 95/98/NT, MacOS X, Unix) sin ser necesario modificar su código fuente. CLIPS puede ser ejecutado en cualquier sistema con un compilador ANSI de C, o un compilador de C++. El código fuente de CLIPS puede ser modificado en caso que el usuario lo considere necesario, con el fin de agregar o quitar funcionalidades. Integrabilidad: CLIPS puede ser embebido en código imperativo, invocado como una sub-rutina, e integrado con lenguajes como C, Java, FORTRAN y otros. CLIPS incorpora un completo lenguaje orientado a objetos (COOL) para la elaboración de sistemas expertos. Aunque está escrito en C, su interfaz más próxima se parece a LISP. Pueden escribirse extensiones a CLIPS sobre C, y al contrario, CLIPS puede ser llamado desde C. CLIPS puede ser extendido por el usuario mediante el uso de protocolos definidos. Desarrollo Interactivo: La versión estándar de CLIPS provee un ambiente de desarrollo interactivo y basado en texto; este incluye herramientas para la depuración, ayuda en línea, y un editor integrado. Las interfaces de este ambiente tienen menús, editores y ventanas que han sido desarrollados para MacOS, Windows 95/98/NT, X Window, entre otros. que debe poder trabajar con datos que tengan un cierto grado de abstracción. Verificación/Validación: CLIPS contiene funcionalidades que permiten verificar las reglas incluidas en el sistema experto que está siendo desarrollado, incluyendo diseño modular y particionamiento de la base de conocimientos del sistema, chequeo de restricciones estático y dinámico para funciones y algunos tipos de datos, y análisis semántico de reglas para prevenir posibles inconsistencias. Como el sistema trata con este tipo de datos su respuesta debe ser flexible. No se busca un sistema que seleccione la vivienda idónea para cada usuario sino uno que, mediante la información que obtenga de conversar con él, muestre las que mejor se ajustan a sus necesidades permitiendo un cierto margen. Documentación: En la página web oficial de CLIPS se encuentra una extensa documentación que incluye un Manual de Referencia y una Guía del Usuario. Bajo Costo: CLIPS es un software de dominio público. Una de las razones del amplio uso de CLIPS está en sus derivados e interfaces con otros lenguajes, como: JESS: implementación de CLIPS en Java [6]. FuzzyCLIPS: incorpora a CLIPS la posibilidad de usar razonamiento difuso [3]. CLIPSMM: una interfaz libre de CLIPS con C++ [7]. PHLIPS: extensión para PHP [1]. EHSIS: Implementación del lenguaje CLIPS con APIs adicionales y documentación en castellano [10]. 2. DESCRIPCIÓN DEL PROBLEMA La búsqueda de una vivienda es hoy en día un problema habitual para gran parte de la población española. Debido a la especulación urbanística de los últimos años los jóvenes que desean encontrar su primera vivienda, las familias que buscan un piso de mayores dimensiones o incluso una segunda residencia para mejorar su calidad de vida tienen grandes dificultades para conseguirlo debido al gran número de viviendas en venta y a su elevado precio. El objetivo de este trabajo ha sido desarrollar un sistema para facilitar en la medida de lo posible a sus usuarios la búsqueda de una vivienda ya sea para vivir habitualmente o para pasar sus vacaciones. A la hora de buscar la forma de solucionar el problema se ha buscado cumplir ciertos requisitos: Una vez analizados estos requisitos se ha optado por utilizar un sistema experto ya que una de sus principales aplicaciones es la gestión del conocimiento y su distribución a los usuarios de forma óptima para satisfacer sus intereses [5]. Esto cumple perfectamente con el objetivo anteriormente mencionado, facilitar la búsqueda de una vivienda, y lo hará en forma de un sistema de recomendación ya que es precisamente esto lo que se pretende. Se busca emular a un agente inmobiliario que mediante una serie de preguntas averigua cuales son las necesidades de sus clientes y ajusta su oferta a sus preferencias. Para la implementación del sistema experto se ha optado por CLIPS por tratarse de un software de dominio público con extensa documentación y una gran comunidad de usuarios. 3. DECISIONES DE DISEÑO Como se ha dicho en el apartado anterior, el sistema trata de emular a un agente inmobiliario que aconseja a un cliente sobre las viviendas de que dispone. Para realizar esta tarea efectuará una serie de preguntas al usuario con objeto de obtener el conocimiento necesario para seleccionar las viviendas más acordes a sus preferencias. Mediante las preguntas y un sistema de reglas el sistema decidirá cuales son las viviendas que mejor se ajustan a los requisitos y preferencias del usuario. Existe un elevado número de variables que pueden tomarse en consideración a la hora de buscar una vivienda: el presupuesto inicial, la capacidad de obtener un préstamo, la situación de la vivienda con respecto a comunicaciones y a zonas recreativas cercanas... Muchas de estas variables constan de un elevado factor humano, es decir, tratan información ambigua o imprecisa. La mejor forma de enfrentarse a este problema sería utilizar modelos heurísticos como factores de incertidumbre o teoría de inferencia bayesiana pero, para no aumentar en exceso la complejidad del sistema se ha optado por realizar una aproximación general muy básica, tratando las variables ambiguas como rangos de valores. Debe tener la capacidad de conversar con los usuarios, ya que éstos deben expresarle sus preferencias y limitaciones en la búsqueda. Se han definido cuatro tipos de usuarios del sistema: un único individuo, una pareja, una familia, diferenciables fácilmente por el número de personas que lo componen, y un tipo especial llamado vacacional, para los usuarios que busquen una segunda residencia para pasar sus vacaciones. Debe poder trabajar con datos imprecisos. Ciertas preferencias de los usuarios no serán concretas por lo El presupuesto de los usuarios se ha dividido en tres grupos: bajo para los usuarios con poco poder adquisitivo, medio para aquellos en una situación económica más o menos acomodada y alto para grandes fortunas o que al menos puedan permitirse desembolsos económicos considerables. Esta clasificación otorga al sistema una cierta flexibilidad, existe la posibilidad de que un usuario esté dispuesto a gastarse una cantidad de dinero adicional a la que tenía en un primer momento si se le muestra una vivienda que excede su presupuesto pero no de forma considerable. Los tipos de vivienda han sido clasificados por su tamaño: piso grande, piso pequeño, estudio y chalet. Las reglas del sistema seleccionarán unos u otros según el tipo de usuario, presupuesto y sus preferencias. Una vez definido el conjunto de usuarios, de viviendas y presupuestos se define una serie de reglas que interactuando con la base de conocimientos deciden si es preciso realizar una pregunta concreta. Para diferenciar el tipo especial de usuarios “vacacional” del resto de usuarios es necesario preguntar por el fin al que se va a destinar la vivienda; si va a ser usada como vivienda durante las vacaciones se tratará de un usuario “vacacional”, de lo contrario se tratará de uno de los otros tres tipos mencionados anteriormente. Una vez diferenciado el usuario “vacacional” del resto resulta razonable pensar que a dicho usuario no se le deban formular las preguntas destinadas a otros tipos de usuarios. Para clasificar al resto de tipos de usuario se les formula una pregunta referente al número de habitantes. Si su respuesta es uno se trata de un usuario individual, si es dos, una pareja y si el número de habitantes es mayor de dos se tratará de una familia. Para un tipo de usuario individual se le pregunta además por su edad, para clasificarlo en joven o adulto ya que se ha considerado que los jóvenes pueden estar interesados en pisos de reducidas dimensiones como un estudio, sin embargo las personas de una mayor edad no suelen buscar pisos tan pequeños y suelen preferir viviendas que les ofrezcan una mayor comodidad. Las dos últimas preguntas no están destinadas a clasificar al usuario sino a incluir en la búsqueda de la vivienda sus preferencias. Se le pregunta acerca de si prefiere que la vivienda se encuentre en la ciudad o en un pueblo a las afueras (se ha definido la búsqueda sólo para una ciudad y sus alrededores) y si prefiere una casa de un tamaño grande o de dimensiones más reducidas. Una vez obtenida toda esta información se aplican las reglas que descartan del total de viviendas disponibles aquellas que no se ajustan al tipo de usuario y a sus preferencias. Como se ha dicho anteriormente el sistema realiza una aproximación muy general al problema. Existen multitud de casos que no han sido contemplados, no obstante si se desease ampliar el grado de precisión del sistema únicamente habría que aumentar el número de variables, e incluir nuevas preguntas que permitan tomarlas en consideración. Figura 1. Diagrama de formulación de preguntas Las preguntas que siempre deben realizarse son el presupuesto del que dispone el usuario y si desea la vivienda para vivir habitualmente o para usarla durante sus vacaciones. Como se puede ver en la Figura 1 el resto de preguntas no siempre se realizan ya que dependen de los datos introducidos por el cliente. 4. IMPLEMENTACIÓN El sistema experto se ha implementado mediante 3 módulos: MAIN, USUARIO, CASAS. 4.1 MAIN Módulo encargado de realizar las preguntas al usuario, en función de sus respuestas el sistema almacena hechos (facts) que luego serán de utilidad a la hora de elegir una casa adecuada a las necesidades del usuario. Se han definido una serie de funciones encargadas de realizar las preguntas. realiza-pregunta: función que realiza una determinada pregunta al usuario y tiene un conjunto de valores entre los cuales se debe hallar la respuesta del usuario. Esta función asocia la respuesta del usuario a una variable y comprueba que lo que ha respondido coincide con alguno de los valores entre los cuales debe estar. Si no es así, realiza de nuevo la pregunta hasta que la respuesta sea la esperada. multi-pregunta: es una pregunta que puede tener múltiples respuestas, llama a la función realizapregunta y almacena la respuesta en una variable. obt-numero: se encarga obtener el número de habitantes de la casa mediante una pregunta. Almacenará en una variable el tipo de inquilinos de la casa en cuestión: “individual”, si es una sola persona, “familia”, si son más de dos personas o “pareja” si son dos personas. Cuando el motor de inferencias activa una regla, se realiza la pregunta correspondiente y se añaden de manera dinámica, mediante ”assert”, los hechos relacionados con la pregunta y la respuesta del usuario. Los hechos que se almacenarán pueden ser los siguientes: uso: vivir o vacaciones. Para que quiere comprar la casa. localizacion: pueblo o ciudad. Dónde le gustaría comprar la casa. tipoHabitantes: individual, pareja o familia. Según el número de personas que habiten la casa. gustos: casa grande o pequeña, según las preferencias del usuario. presupuesto: alto, medio o bajo. Según la cifra que introduzca el usuario. edad: edad del usuario. Solo se almacenará si el tipoHabitantes es individual. 4.2 USUARIO Módulo que determina el tipo de usuario. Se define una Superclase CLIENTE de la que heredarán todos los demás tipos de usuarios. Este tipo tiene un atributo presupuesto que indica el presupuesto de la persona que va a comprar la casa. obt-presupuesto: se encarga de obtener el presupuesto en función de la respuesta del usuario a una pregunta. Si el presupuesto es menor o igual a 100.000 euros diremos que tiene un presupuesto “bajo”, si está entre 100.000 y 300.000 euros tendrá un presupuesto “medio” y por último, si responde con una cantidad mayor a 300.000 euros, se le asignará un presupuesto “alto”. A partir del usuario anterior, se definen una serie de tipos de usuarios: obt-edad: se encarga de obtener la edad de un usuario de tipo “individual”, esta función solo se utilizará en caso de que el número de habitantes sea 1, en cuyo caso se preguntará la edad del usuario. FAMILIA: más de dos habitantes. Sus propiedades son localización y gustos. Si un usuario tiene una edad de menos de 30 años, se dirá que es “joven”, y si por el contrario, es mayor de 30 años, será “adulto”. Una vez definidas todas las funciones que se encargarán de realizar las preguntas, se definen una serie de reglas que permitirán realizar las preguntas convenientes usando las funciones definidas anteriormente. Las respuestas de los usuarios generarán hechos que se almacenarán en la memoria de trabajo. PAREJA: dos habitantes cuyas propiedades son: localización y gustos. INDIVIDUAL: un único habitante. Sus atributos son localización, gustos y edad. VACACIONAL: son los usuarios que quieren una casa para pasar las vacaciones, no para vivir habitualmente. Su única propiedad es la que hereda de la superclase CLIENTE. Después de haber definido los tipos de usuarios que tenemos, procedemos a generar las reglas que permitirán crear instancias de ellos. Cuando se active una regla, se creará la instancia correspondiente con los datos necesarios para el tipo de usuario. 4.3 CASAS Este modulo define los tipos de casas que hay disponibles y además selecciona las que más se ajustan a las necesidades del usuario. Se crea una plantilla que define cómo es una casa. Una casa estará formada por: Titulo: nombre de la casa Descripción: breve descripción acerca de la casa. Tipo: tipo de casa, piso, chalet, etc. Presupuesto: dentro de qué presupuestos se encuentra la casa: alto, bajo… Metros: metros cuadrados de la casa. Precio: precio en euros de la casa. A partir de aquí se definen una serie de hechos, mediante deffacts, que conformarán los tipos de casas disponibles en nuestra inmobiliaria. Por último, se descartan las casas que no cuadran con lo que el usuario está buscando. Estos descartes se realizan mediante reglas. descartar-por-vacaciones: si el usuario es de tipo VACACIONAL, ha respondido que quiere una casa para vacaciones, se le descartan las casas localizadas en pueblo o ciudad. Suponemos que busca playa o montaña para pasar sus vacaciones, algo alejado de donde normalmente se habita. descartar-por-localizacion: Para cualquier tipo de cliente que haya respondido a la pregunta: ¿ Prefieres una casa en la ciudad o en un pueblo? Al responder a esta pregunta se inserta un hecho “localización”. Si el cliente responde que busca una casa para vacaciones no deberá responder a esta pregunta y por tanto está regla no se activará. En función de las preferencias del usuario, pueblo o ciudad, se descartará la opción contraria a la que elija el usuario. descartar-por-edad: Para usuarios INDIVIDUALES de edad joven, se descartan las casas tipo “chalet” porque se supone que una persona joven no tiene un presupuesto tal alto y además es una casa muy grande para una persona joven. descartar-por-familia: si el usuario es FAMILIA, directamente se le descartan las casas tipo “estudio” porque se suponen demasiado pequeñas para una familia. descartar-por-preferencias-familia: para usuarios de tipo FAMILIA. En este caso se descartan casas según los gustos del usuario, pero sin tener en cuenta las casas de tipo “estudio” ya que a este usuario se le descartaron anteriormente. descartar-por-preferencias-joven: para usuarios INDIVIDUAL, que además tengan edad “joven”. Esta regla pretende descartar tipos de casas para este tipo de usuarios, en función de sus gustos, sin tener en cuenta las casas tipo “chalet” que ya se les habrían descartado anteriormente. descartar-por-preferencias: Esta regla se encarga de descartar tipos de casas según las preferencias y gustos del usuario, igual que las dos reglas anteriores. Ahora la regla se activará para todo tipo de clientes, excluyendo a familias e individuales que tienen sus propias reglas. descartar-por-presupuesto: Regla que descarta casas según el presupuesto de los usuarios. Para un presupuesto bajo se descartarán las casas de presupuesto alto y medio y para uno medio solo se descartan las de presupuesto alto. Hasta este momento, hemos almacenado una serie de hechos que se corresponden con las exigencias del comprador a la hora de elegir una casa. Después, hemos descartado las casas que no cumplen las expectativas del cliente y finalmente tenemos los hechos que nos permiten conocer exactamente el tipo de casa buscado y, en función de esta información, se mostrarán las casas más adecuadas para que el cliente pueda elegir entre un número reducido de casas. 5. EJEMPLOS DE SIMULACIÓN 5.1 Prueba 1 Una persona joven desea comprar una casa en la ciudad. Tiene un presupuesto limitado y busca una casa pequeña. Busca una casa para vivir o para vacaciones (vivir/vacaciones)? vivir Cual es tu presupuesto? 100.000 Prefieres una casa en la ciudad o en un pueblo (ciudad/pueblo)? ciudad Cuantas personas habitaran la casa habitualmente? 1 Cuales son tus preferencias respecto al tamaño de la vivienda (grande/pequena)? pequena Cual es tu edad? 20 ********************************* ********* Posible Casa ********** ********************************* Titulo: casa5 Descripción: Casa recogida, ideal para jóvenes. Calle Alcalá nº 34 7ºA. 1 Habitación y 1 baño.(cocina incluida en el salón) Tipo: estudio 5.3 Prueba 3 Localizacion: ciudad Precio/: 100000€ Metros: 40 Una pareja busca una casa grande para vivir en un pueblo. Tienen un presupuesto alto. Figura 2. Captura Prueba 1 En este caso se ha encontrado una casa que se adecua a las necesidades del usuario. 5.2 Prueba 2 Una familia desea adquirir una casa en la ciudad. El presupuesto del que disponen en bajo y además buscan una casa grande en la que vivir 6 personas. Busca una casa para vivir o para vacaciones (vivir/vacaciones)? vivir Cual es tu presupuesto? 100.000 Prefieres una casa en la ciudad o en un pueblo (ciudad/pueblo)? ciudad Cuantas personas habitaran la casa habitualmente? 6 Cuales son tus preferencias respecto al tamaño de la vivienda (grande/pequena)? grande No tenemos ningna casa para las necesidades requeridas ... posible Figura 3. Captura Prueba 2 Durante el proceso de preguntas se han creado los siguientes hechos: f-0 (initial-fact) f-16 (uso vivir) f-17 (presupuestoEuros 100.0) f-18 (presupuesto "bajo") f-19 (localizacion ciudad) f-20 (numHabitantes 6) f-21 (tipoHabitantes "familia") f-22 (gustos grande) Figura 4. Procesos Prueba 2 Se han creado las siguientes instancias: Busca una casa para vivir o para vacaciones (vivir/vacaciones)? vivir Cual es tu presupuesto? 300.000 Prefieres una casa en la ciudad o en un pueblo (ciudad/pueblo)? pueblo Cuantas personas habitaran la casa habitualmente? 2 Cuales son tus preferencias respecto al tamaño de la vivienda (grande/pequena)? grande ********************************* ********* Posible Casa ********** ********************************* Titulo: casa8 Descripción: Casa tranquila, ideal para relajarse. Perales de Tajuña. Calle Rioja, nº 20 6ºC. 3 Habitaciones y 2 baños. Tipo: piso-grande Localizacion: pueblo Precio/: 200000€ Metros: 95 ********************************* ********* Posible Casa ********** ********************************* Titulo: casa7 Descripción: Casa aislada del riudo. El escorial, Calle San Juan, nº 40 2ºA. Urbanización: Puerto Jardín. 6 Habitaciones y baños. Piscina compartida. Tipo: chalet Localizacion: pueblo Precio/: 300000€ Metros: 400 Figura 6. Captura Prueba 3 [initial-object] of INITIALOBJECT [gen3] of USUARIO::FAMILIA (presupuesto "bajo") (localizacion ciudad) (gustos grande) Figura 5. Instancias Prueba 2 Finalmente podemos observar que el sistema no ha encontrado ninguna casa que encaje con el perfil de este usuario. 5.4 Prueba 4 En este último caso, el usuario busca una casa para pasar sus vacaciones y tiene un presupuesto medio. Busca una casa para vivir o para vacaciones (vivir/vacaciones)? vacaciones Cual es tu presupuesto? 200.000 ********************************* ********* Posible Casa ********** ********************************* Titulo: casa mar Descripción: Casa en Puerto de Cádiz Santa Maria, Tipo: duplex Localizacion: playa Precio/: 100000€ Metros: 60 ********************************* ********* Posible Casa ********** ********************************* Titulo: casa montaña Descripción: Casa en la sierra, León Tipo: duplex Localizacion: montanya Precio/: 210000€ Metros: 75 Figura 7. Captura Prueba 4 En el caso de que se busque una vivienda para vacaciones, sólo se preguntará por el presupuesto para seleccionar un conjunto de casas a mostrar al usuario. 6. CONCLUSIONES Debido a que se trata de un sistema experto [9] nuestra Inmobiliaria Inteligente se beneficia de ciertas ventajas: Velocidad: un sistema experto puede consultar una base de datos y obtener resultados de forma más rápida que cualquier ser humano. Duplicación: una vez programado un sistema experto puede ser duplicado infinidad de veces. Bajo coste de duplicación: gracias a la capacidad de duplicación el coste de obtener copias del sistema es despreciable. Permanencia: al contrario que los humanos, un sistema experto no sufre pérdida de facultades con el tiempo. Sin embargo, pese a que el sistema funciona bien dentro de sus limitaciones, se estableció en las decisiones de diseño una aproximación muy básica al problema de la búsqueda de una vivienda y existen multitud de casos que puede no resolver correctamente. Para obtener un sistema con una mayor capacidad de análisis se debería ampliar la población del sistema y los factores a considerar en cada caso, debido a esto, se debería aumentar también el número de preguntas que se le realizan al usuario. Probablemente la realización de un estudio de las características de una vivienda más valoradas por los clientes de una inmobiliaria nos otorgaría el conocimiento necesario para mejorar el sistema, definiendo nuevas variables y las preguntas necesarias para obtener el conocimiento. Dotando al sistema de mayor complejidad conseguiríamos un aumento de precisión. Sin embargo, los conjuntos de clasificación no deberán ser demasiado estrictos ya que podría ocasionar un exceso de precisión y, como el problema al que nos enfrentamos consta de un considerable factor subjetivo, es recomendable suavizar las reglas de decisión. Con esto obtendríamos un sistema que deja cierta libertad al usuario para elegir en torno a sus preferencias una vez ya se han eliminado las opciones que no son viables. No obstante, debido a que se trata de un sistema experto, tiene ciertas limitaciones como son: Carece de sentido común: un sistema experto puede llegar a conclusiones erróneas si no se establecen correctamente las reglas que lo definen y no se contempla este tipo de casos. Difícil acceso a información no estructurada: un humano puede tratar la información fácilmente aunque no tenga una estructura definida, lograr esto en un sistema experto supondría un aumento considerable de su complejidad. Perspectiva global: un sistema experto no distingue cuales son las cuestiones más relevantes de un problema. Elevado coste inicial: realizar los estudios previos necesarios para establecer correctamente las reglas que definen el motor de inferencia de un sistema experto son costosos. Como mejora adicional al sistema, con objeto de tratar de forma más eficiente el razonamiento humano del que este sistema experto recibe la mayoría de los datos, se le podrían añadir reglas de razonamiento bajo incertidumbre. Es decir, debido a que la representación de valores como el confort, la sensación de espacio o las vistas de una vivienda pueden ser ambiguas o imprecisas se podrían incluir en el sistema experto modelos heurísticos como factores de incertidumbre o redes bayesianas que le permitieran enfrentarse al problema con mayores garantías. Formas adicionales de mejorar el sistema podrían ser utilizar sistemas de aprendizaje, como vecino más cercano, redes neuronales y algoritmos genéticos, o utilizar técnicas de minería de datos sobre la información obtenida de la utilización del sistema. 7. REFERENCIAS [1] CLIPS - PHP Extension [en línea]. [ref. de 3 de enero de 2008] <http://phlips.sourceforge.net/> [2] Montes Castro, Jesús. Sistemas expertos (SE) [en línea]. [ref. de 4 de enero de 2008] <http://www.monografias.com/trabajos16/si stemas-expertos/sistemas-expertos.shtml> [3] Orchard, Bob. FuzzyCLIPS Web site [en línea]. [ref. de 3 de enero de 2008] <http://ai.iit.nrc.ca/IR_public/fuzzy/fuzzyCli ps/fuzzyCLIPSIndex.html> [4] Riley, Gary. CLIPS: A Tool for Building Expert Systems [en línea]. [ref. de 26 de diciembre de 2007] <http://www.ghg.net/clips/CLIPS.html> [5] Samper Márquez, Juan José. Introducción a los Sistemas Expertos [en línea]. [ref. de 4 de enero de 2008] <http://www.redcientifica.com/doc/doc1999 08210001.html> [6] Sandia National Laboratories. JESS, the Rule Engine for the JavaTM Platform [en línea]. [ref. de 26 de diciembre de 2007] <http://herzberg.ca.sandia.gov/> [7] Vinyard Jr., Rick L. clipsmm - C++ CLIPS Interface [en línea]. [ref. de 3 de enero de 2008] <http://clipsmm.sourceforge.net/> [8] Wikipedia. CLIPS [en línea]. [ref. de 3 de enero de 2008] <http://es.wikipedia.org/wiki/CLIPS> [9] Wikipedia. Sistema experto [en línea]. [ref. de 3 de enero de 2008] <http://es.wikipedia.org/wiki/Sistema_expert o> [10] Erabaki. EHSIS [en línea]. [ref. de 3 de enero de 2008] <http://erabaki.ehu.es/ehsis/>