Boletín de problemas 7
Todos
los cádigos y las imágenes se han elaborado
con software Java.
Fecha de entrega: viernes
12 de abril de 2002
Problema 1. Robots en una fábrica
Descripción del problema
Su tarea consiste en proyectar
un sistema de gestión de materiales para una
fábrica de equipos musicales.
En la fábrica hay 2 cadenas
de montaje completas que construyen y embalan los equipos,
los cuales, a continuación, pasan a cintas transportadoras
que los llevan a puntos de recogida robotizados. Los
equipos llegan en cola al extremo final de la
cinta, donde el robot los recoge uno a uno y los coloca
en el soporte.
En esta foto se muestra un ejemplo
de un robot recogiendo un equipo del final de la cinta
transportadora. Los toma de la cinta por orden,
es decir, el primero en entrar es el primero en cargar.
(En esta tarea, ignoramos los detalles exactos de cómo
el robot coloca los equipos en el soporte).
La carga de vacío del robot
se desplaza al punto de recogida y allí traba
el producto y lo coloca en su soporte. Unos sensores
verifican que el producto permanece trabado por la carga
de vacío durante la operación de recogida.
Tras cargar 4 equipos en el soporte, el robot se desplaza
hasta el área de almacenaje o estación
de posición. En esta zona, se erigen
pilas de productos. El producto se coloca en
su estantería de almacenaje apropiada. Una vez
que se termina la operación de apilamiento, el
robot queda libre para antender las peticiones de servicio
de otros puntos de recogida de las cintas de montaje.
Cuando se hace un pedido de equipos
para transportarlos a un distribuidor, se produce una
petición de transferencia desde el área
de almacenaje a la estación de embalaje
con plástico extensible. Cuando se solicita
una transferencia, el vehículo de transferencia
(otro robot) se desplaza al área de almacenaje
(estación de posición). En el vehículo
de transferencia y en la estación de posición
respectiva se ponen en marcha cadenas transportadoras
y la pila se desplaza desde la estación de posición
al vehículo de transferencia. Una vez que el
producto apilado está en el vehículo,
éste se desplaza sobre raíles hasta el
alimentador de un embalador automático de plástico
extensible en donde tiene lugar la descarga. Así,
el vehículo de transferencia queda libre para
atender otras peticiones de transferencia. El embalador
automático embala el producto apilado con plástico
extensible y lo presenta para que se lo lleven los operarios
de la carretilla elevadora a cargarlo en camiones o
contenedores que parten al destino previsto.
La figura siguiente resume el funcionamiento
del sistema de gestión de materiales. El enunciado
del problema comenta los detalles de este esquema.
Es un esquema similar a sistemas
actuales de producción en uso, que generalmente
se controlan mediante un PC con una IGU para que un
operario supervise la totalidad del proceso. Un
solo operario puede gestionar todas las cintas transportadoras,
los puntos de recogida, las estaciones de ubicación,
el vehículo de transferencia y el embalador.
Estos sistemas tienen un modo de aprendizaje
que permite al operario realizar manualmente los movimientos
deseados con los robots y grabarlos; lo que resulta
aún más efectivo que la programación.
Después, puede editarlos y repetir los movimientos
ya aprendidos en todas las estaciones.
Enunciado del problema
Su programa simulará el
funcionamiento de la fabrica de equipos musicales. Debe
modelar los siguientes procesos:
1.
La planta fabrica 6 tipos de equipos. Numérelos
del 0-5.
2.
Una vez producido, cada equipo tiene un tipo y un número
de serie.
3.
La planta tiene dos líneas de producción.
Conviene que las modele en forma de cola.
a. La
línea 0 fabrica 8 equipos por minuto.
b.
La línea 1 fabrica 4 equipos por minuto.
4.
Se pide al usuario, al inicio de cada minuto, que introduzca
el tipo de equipo (0-5) que se va a producir en la línea
0 y en la línea 1. Una vez introducidos, se producen
y se añaden a las colas (líneas de producción).
5.
Las líneas de producción asignan un número
de serie único a cada equipo, que empiezan por
0 y aumentan en una unidad por cada equipo producido. En
primer lugar, la línea 0 obtiene el número
de serie de todos los equipos que va a producir en el
minuto siguiente, y después, la línea
1 obtiene los números de serie de los equipos
que ensamblará en el minuto siguiente. En
aras de la sencillez, asuma que la línea 0 acaba
su producción un minuto antes de que la línea
1 comience la suya.
6.
La planta tiene un robot que desplaza los equipos en
grupos de 4 desde el final de las líneas de producción
hasta la zona de almacenamiento. Los quita de la
cola en el extremo final de la línea de producción,
y los coloca en la zona de almacenamiento, descrita
anteriormente. Como la línea 0 fabrica 8
equipos por minuto, y el robot sólo puede llevar
4 a la vez, éste tiene que realizar dos viajes
en cada minuto para atender a la línea 0.
7.
La planta tiene 6 áreas de almacenamiento, una
por cada tipo de equipo. Cada área dispone de
cuatro 4 estructuras de almacenamiento sobre las que
se colocan los equipos. La altura de los productos
apilados debe mantenerse lo más uniforme posible.
8.
Los clientes pueden hacer un pedido por la cantidad
que deseen de cualquier tipo de equipo.
a.
Tramitamos un pedido por minuto, al final
del minuto de producción una vez que los equipos
han sido depositados en las zonas de almacenamiento.
b.
Se pide al usuario que introduzca la cantidad de cada
tipo de equipo (0-5) en el pedido.
c.
En este ejercicio, asuma que habrá suficientes
equipos para cumplir con el pedido. No es necesario
que se ocupe del supuesto en que se pidan más
equipos de los que haya disponibles. Cuando se
realiza un pedido, se activa el vehículo de desplazamiento
para satisfacerlo.
9.
La planta tiene un vehículo de transferencia
que desplaza cualquier cantidad de equipos (suposición
que realizamos para simplificar el problema) desde la
zona de almacenamiento hasta la estación de embalaje. El
vehículo mueve los equipos en orden individual
hasta la zona de embalaje. Debe mantener la altura
de las pilas lo más uniforme posible en las áreas
de almacenamiento.
10. Cuando el vehículo
de desplazamiento realiza un movimiento muestra (utilizando
System.out.println):
a.
el número de orden, comenzando en 1 e incrementando
de uno en uno;
b.
por cada equipo de la orden:
i. el tipo de equipo (0-5);
ii. el número de
serie del equipo
11. No es necesario que modele
la estación de almacenaje o la salida de mercancías. Una
vez que el vehículo de transporte haya mostrado
el pedido y sus detalles, ya ha terminado con su actividad
de un minuto.
12. El programa tiene que
modelar 5 minutos de actividad en la planta (esto es,
repetir 5 veces los pasos anteriores). No es necesario
que el programa muestre el tiempo real.
Utilice adecuadamente estructuras
de datos en el programa (pilas y colas) para modelar
el movimiento físico de los speakers
en la planta.
- Modele una línea de producción
como una Queue. Utilice la clase ArrayQueue u otro
tipo de implementación de la interfaz Queue
presentada en clase.
- Cree una clase StackingArea
para ocultar los detalles de implementación
de la gestión de almacenaje. Modele las
áreas de almacenaje como arrays de Stacks.
Utilice la clase ArrayStack u otra implementación
de la interfaz Stack presentada en clase. Tendrá
que ampliarla ligeramente para ser capaz de controlar
la altura de los productos apilados.
- Modele el Robot y la TransferCar
como clases con comportamientos apropiados. Pueden
ser bastante sencillas.
- Cree una clase Product para
representar los objetos (equipos musicales) que se
producen (añaden a las colas) y se gestionan
en pilas de productos almacenados.
- El método main() puede
contener la lógica general que se va a ejecutar:
- Para cada uno de los 5 minutos
de funcionamiento de la planta, solicite los productos
que se van a producir en cada línea, invoque
las operaciones correctas en el robot y en las líneas
de producción, solicite la cantidad del pedido
de cada speaker
e invoque las operaciones correctas en el vehículo
de desplazamiento.
- No es necesario que el programa
sea general. Sólo necesita funcionar
con 2 líneas de producción, 6 productos,
etc. Si le sirve de ayuda puede utilizar arrays
de dimensión fija, etc.
Vigile los conflictos con los nombres.
En Java existen las clases Stack, Queue y Robot,
entre otras.
Nota extra
Si desea obtener un máximo
de 20 puntos extra, escriba una interfaz gráfica
de usuario (IGU) para el programa principal del boletín
de ejercicios. Tiene la posibilidad de hacerlo en cualquier
boletín de problemas del 6 al 10; pero sólo
en uno de ellos. En general, es libre de diseñar
la IGU que usted quiera; como si se tratase de un ejercicio
en una 'hoja de papel en blanco'. No podrá utilizar
System.out.println en su solución; todas las
entradas y salidas de datos deben hacerse con Swing.
Si opta por crear la interfaz gráfica de usuario
ha de entregar dos soluciones:
- El trabajo general, sin la IGU,
tal y como se describe en el encargo, lo que nos permite
calificar la parte principal de trabajo sin tener que
preocuparnos por los posible errores introducidos por
la IGU.
- La solución completa con
la IGU. En esta segunda entrega sólo se tendrá
en cuenta, a efectos de calificación, la IGU,
hasta un máximo de 20 puntos. Sólo se
calificará la IGU (y sus interfaces inmediatas
con el resto del código). Recibirá entre
0 y 20 puntos; aunque reciba 0 su nota general en el
trabajo no se verá perjudicada o reducida.
Requisitos específicos para
el boletín de problemas 7: debe mostrar
gráficamente elementos de la planta (línea
de producción, área de almacenaje, vehículo
de transferencia, estación de embalaje en plástico
extensible) y de las entradas del usuario para
obtener la puntuación máxima. La representación
puede ser estilizada o abstracta, pero ha de tener ciertos
elementos gráficos. A continuación,
mostramos una posible representación de la IGU:

Entrega del trabajo
Requisitos
- Problema 1: solamente por correo
electrónico. No es necesario entregarlo en
papel.
- Problemas 2 y 3: copia en papel
y copia electrónica de TODOS los códigos
fuente (todos los archivos con la extensión
.java).
- Incluya en TODOS los archivos
que presente su nombre, el nombre de usuario, la sección,
el nombre del profesor ayudante, el número
de trabajo y una relación de las personas con
las que haya comentado el boletín de problemas.
- NO entregue copias electrónicas
o en papel de código compilado (archivos .class).
Sanciones
- Por pérdida de copia
en papel: -10% de la puntuación del boletín
de problemas.
- Por pérdida de copia
electrónica: -30% de la puntuación del
boletín de problemas.
- Por entrega fuera del plazo:
-20% de la puntuación del boletín de
problemas si es un día de retraso. Por
más de un día de retraso = NO SE PUNTUARÁ
|