FACULTAD DE CIENCIAS EXACTAS, INGENIERIA Y AGRIMENSURA INTRODUCCION A LA INTELIGENCIA ARTIFICIAL – L.C.C. 2007 Ontologías + Motor de Inferencia ( Protege + Jess ) Ejercicio: El sistema Boxer El sistema de Reglas El sistema trata de ayudar a empaquetar una serie de objetos en cajas. Los objetos tienen propiedades como peso, tamaño o fragilidad, y se supone que hay un número suficiente de cajas ( todas tamaño 10). El proceso de empaquetado pasa por las siguientes fases: 1. 2. 3. 4. Empaquetar los objetos frágiles envolviéndolos previamente. Empaquetar los objetos pesados asegurando que no se ponen junto con objetos frágiles. Empaquetar los objetos de peso medio asegurando que no se ponen junto con objetos frágiles. Empaquetar los objetos de poco peso colocándolos en cualquier caja que tenga sitio. A continuación se describe el sistema de reglas a partir del cual debe realizarse la implementación en Jess. Regla 1: IF Fase es empaquetar_objetos_fragiles Hay algún objeto frágil a empaquetar Hay una caja vacía o una caja que tiene sólo objetos frágiles cENs envolierdel objeto frágil Regla21: IF Fase es empaquetar_objetos_fragiles Hay algún objeto frágil a empaquetar Hay una caja vacía o una caja que tiene sólo objetos frágiles cENs coloaerdel objeto enlna caja Regla31: Regla4: IF Fase es empaquetar_objetos_fragiles Hay algún objeto frágil a empaquetar cENs mpeztar una cajanuevja IF Fase es empaquetar_objetos_fragiles Comenzar la fase de empaquetar_objetos_de_peso_medio Regla 8: IF Fase es empaquetar_objetos_de_peso_medio Hay algún objeto de peso medio que empaquetar Hay una caja vacía o una caja que no contiene objetos frágiles El espacio libre en la caja >= tamaño del objeto THEN colocar el objeto en la caja decrementar el tamaño libre de la caja Regla 9: IF Fase es empaquetar_objetos_de_peso_medio Hay algún objeto de peso medio a empaquetar THEN empezar una caja nueva Regla 10: IF Fase es empaquetar_objetos_de_peso_medio THEN Finalizar esta fase Comenzar la fase de empaquetar_objetos_de_poco_peso Regla 11: IF Fase es empaquetar_objetos_de_poco_peso Hay algún objeto de poco peso que empaquetar El espacio libre en la caja >= tamaño del objeto THEN colocar el objeto en la caja decrementar el tamaño libre de la caja Regla 12: IF Fase es empaquetar_objetos_de_poco_peso Hay algún objeto de poco peso a empaquetar THEN empezar una caja nueva Regla 13: IF Fase es empaquetar_objetos_de_poco_peso THEN Finalizar esta fase Detener la ejecución del sistema Datos de Entrada Se definirá la siguiente estructura para representar los objetos a ser empaquetados ( deftemplate objeto (slot nombre) (slot unidades) (slot peso) (slot tamanio) (slot frágil) (slot envuelto)) A partir de esta definción, una entrada concreta podría ser: (deffacts objects “objetos a empaquetar” (objeto (nombre “libro”) (unidades 7) (peso pesado) (tamanio 2) (frágil no) (envuelto no)) (objeto (nombre “lampara”) (unidades 2) (peso medio) (tamanio 8) (frágil si) (envuelto no)) (objeto (nombre “juego de platos”) (unidades 1) (peso medio) (tamanio 5) (frágil si) (envuelto no)) (objeto (nombre “chaqueta”) (unidades 2) (peso ligero) (tamanio 3) (frágil no) (envuelto no)) (objeto (nombre “tv”) (unidades 1) (peso pesado) (tamanio 10) (frágil si) (envuelto no)) (objeto (nombre “juego de vasos”) (unidades 1) (peso medio) (tamanio 4) (frágil si) (envuelto no)) (objeto (nombre “vaqueros”) (unidades 4) (peso ligero) (tamanio 2) (frágil no) (envuelto no)) (objeto (nombre “camisa”) (unidades 8) (peso ligero) (tamanio 1) (frágil no) (envuelto no))) La salidad del sistema será la impresión por pantalla del contenido de cada una de las cajas siguiendo el siguiente formato: Caja numero: 5 Contiene: (“libro”, “libro”, “libro”, “libro”, “camisa”, “camisa” ) Espacio libre: 0 Contiene objetos fragiles: no