Artificial I
Enviado por Maria Munevar • 1 de Octubre de 2015 • Práctica o problema • 2.622 Palabras (11 Páginas) • 131 Visitas
Implementación en Java de un planificador lineal con pila de objetivos |
BLOCKS WORLD |
María Munévar Moreno Cindy Medina Jiménez Inteligencia Artificial I Lab Assistant: Lucas Marín |
12/12/2012 |
Contenido
1. PLANTEAMIENTO DEL PROBLEMA
2. METODOLOGIA
2.1 Problemas planteados
2.2 Creación de los ficheros
2.3 Creación de clases
3. CONCLUSIONES
PLANTEAMIENTO DEL PROBLEMA
El segundo ejercicio práctico de AI1/PAR consiste en la implementación en java de un planeador lineal con pila de objetivos. El dominio de esta aplicación corresponde a una serie de problemas relacionados con el mundo de los bloques, y se define a continuación:
Predicados
- On-table(x): x está puesto sobre la mesa
- On(x,y): x está sobre y
- Free(x): x no tiene ningún objeto encima
- Free-arm: el brazo robótico no está agarrando ningún objeto
- Picked-up(x): el objeto x está siendo agarrado por el brazo robótico
- Used-cols-num(n): n columnas de bloques están siendo usadas.
- Heavier(x,y): el objeto x es mas pesado que y
NOMBRE DEL OPERADOR | FUNCION | PRECONDICIONES | ELIMINA | AGREGA |
Pick-up(x) | Le ordena al brazo robótico recoger el bloque x el cual está sobre la mesa. | Used-cols-num(n), On-table(x), Free-arm, Free(x) | On-table(x), Free-arm, Used-cols-num(n) | Picked-up(x), Used-cols-num(n-1) |
Leave(x): | Le ordena al brazo robótico dejar el bloque x e sobre la mesa. | Picked-up(x), Used-cols-num(n), n<3 | Picked-up(x), Used-cols-num(n) | On-table(x), Used-cols-num(n+1), Free-arm |
Unstack (x,y): | Le ordena al brazo robótico recoger el bloque x el cual está sobre el bloque y. | On(x,y), Free(x), Free-arm, x!=y | On(x,y), Free-arm | Picked-up(x), Free(y) |
Stack(x,y): | Le ordena al brazo robótico dejar el bloque x sobre el bloque y. | Picked-up(x), Free(y), Heavier(y,x), x!=y | Picked-up(x), Free(y) | On(x,y), Free-arm |
Tabla 1. Operadores considerados en la práctica
Se debe tener en cuenta que se han introducido dos modificaciones en el dominio clásico "mundo de los bloques":
- En la tabla anterior se aprecia que solamente se pueden tener 3 pilas de bloques. Este hecho es comprobado con el predicado Used-cols-num, que se actualiza cada vez que se utiliza el operador Pick-up or Leave.
- Sólo se puede apilar un bloque x sobre un bloque y si el segundo bloque es más pesado que el primero.
METODOLOGIA
En esta sección se detalla la implementación en Java del planificador lineal con pila de objetivos para resolver el problema, por lo que se indica la representación interna que utilizada para gestionar las precondiciones, y asi comprobar la aplicabilidad de los operadores, etc. De igual forma se describe el diseño de tácticas inteligentes para facilitar el proceso de planificación al apilar condiciones previas, la aplicación de los operadores, etc.
...