scieee AI-readable full text Open interactive document viewer

Herramienta informática para el análisis de sistemas de almacenamiento automatizados

Hidalgo Rodríguez, María

Abstract

La finalidad del presente proyecto es generar una herramienta informática para el análisis de sistemas de almacenamiento automatizados que permita obtener, para los datos típicos de un problema, los tiempos de ciclo y las transacciones del almacén, considerando distintos casos de sistemas, métodos, configuraciones y estrategia. Además, se pretende que el proyecto tenga cualidades potenciales de carácter didáctico de forma que tanto el alumnado como el profesorado de distintas asignaturas de ingeniería puedan emplear de forma independiente para comprobar y comparar los resultados obtenidos analíticamente con los arrojados por la aplicación, así como extender sus conocimientos sobre los sistemas de almacenamiento automatizados. De esta idea nace Storage Calculator, una aplicación generada en el entorno App Designer de MATLAB®, cuyo propósito es el análisis de los tiempos de ciclo y el cálculo del número de transacciones dentro de dos tipos de sistemas de almacenamiento automatizados: carrusel y AS/RS. Con el objetivo de lograr estos resultados, se han estudiado diferentes métodos de aproximaciones, implementándolos según las hipótesis consideradas en cada caso.

Full text

Proyecto Fin de Carrera Ingeniería de Telecomunicación Formato de Publicación de la Escuela Técnica Superior de Ingeniería Autor: F. Javier Payán Somet Tutor: Juan José Murillo Fuentes Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2013 Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Herramienta informática para el análisis de sistemas de almacenamiento automatizados Autor: María Hidalgo Rodríguez Tutor: Francisco Javier Doblas Charneco Dpto. Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2022 Trabajo Fin de Grado Grado en Ingeniería Aeroespacial Herramienta informática para el análisis de sistemas de almacenamiento automatizados Autor: María Hidalgo Rodríguez Tutor: Francisco Javier Doblas Charneco Profesor Contratado Doctor Dpto. Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2022 Trabajo Fin de Grado: Herramienta informática para el análisis de sistemas de almacenamiento automatizados Autor: María Hidalgo Rodríguez Tutor: Francisco Javier Doblas Charneco El tribunal nombrado para juzgar el trabajo arriba indicado, compuesto por los siguientes profesores: Presidente: Vocal/es: Secretario: acuerdan otorgarle la calificación de: El Secretario del Tribunal Fecha: Agradecimientos Me gustaría aprovechar esta ocasión, finalizando el Grado de Ingeniería Aeroespacial con este proyecto, para agradecer a todas las personas que me han acompañado en este arduo pero gratificante camino, desde mi familia, que ha visto mi sacrificio, ha entendido mis ausencias y me han apoyado siempre, hasta mis amigos, que han sabido animarme y me han tendido la mano para ayudarme en muchas ocasiones. A todos ellos, que también han celebrado cada logro conmigo, gracias. Por otro lado, quiero agradecer también su esfuerzo y su dedicación a mi tutor, Paco Doblas. Me gustaría acabar transmitiéndole al lector una conclusión de experiencias propias y ajenas: un título en ingeniería puede que no proporcione todos los conocimientos y habilidades necesarias para ejercer la profesión, sin embargo, te educa para tener la templanza, paciencia, dedicación, ambición y espíritu de crecimiento que, sin duda, se ven reflejados en la actitud frente a los retos que posee un ingeniero o una ingeniera. María Hidalgo Rodríguez Sevilla, 2022 I Resumen La finalidad del presente proyecto es generar una herramienta informática para el análisis de sistemas de almacenamiento automatizados que permita obtener, para los datos típicos de un problema, los tiempos de ciclo y las transacciones del almacén, considerando distintos casos de sistemas, métodos, configuraciones y estrategia. Además, se pretende que el proyecto tenga cualidades potenciales de carácter didáctico de forma que tanto el alumnado como el profesorado de distintas asignaturas de ingeniería puedan emplear de forma independiente para comprobar y comparar los resultados obtenidos analíticamente con los arrojados por la aplicación, así como extender sus conocimientos sobre los sistemas de almacenamiento automatizados. De esta idea nace Storage Calculator, una aplicación generada en el entorno App Designer de MATLAB®, cuyo propósito es el análisis de los tiempos de ciclo y el cálculo del número de transacciones dentro de dos tipos de sistemas de almacenamiento automatizados: carrusel y AS/RS. Con el objetivo de lograr estos resultados, se han estudiado diferentes métodos de aproximaciones, implementándolos según las hipótesis consideradas en cada caso. III 2Capítulo 1. Introducción y objetivos después de las operaciones de manufactura. En este contexto, se diferencian dos categorías de almacenamiento. 1. Métodos convencionales de almacenamiento. Las operaciones de almacenamiento y recuperación son llevadas a cabo por personas. Entre estos métodos se incluyen el almacenamiento ”a granel” (posicionando elementos en un área abierta), en sistemas de estantes, contenedores, depósitos, etc. En general, se trata de trabajo intensivo. 2. Sistemas de almacenamiento automatizados. El objetivo de la incorporación de este tipo de instalaciones reside en la reducción o incluso la eliminación del trabajo manual en las labores de almacenamiento. Este tipo de almacenes serán el objeto de análisis del proyecto. Identificación. Una de las metas de la manipulación de materiales es rastrear los elementos que se mueven y almacenan, que es posible gracias a la identificación individualizada mediante algún tipo de etiqueta o código. A día de hoy, el más empleado es el código de barras, ya que se puede leer rápida y automáticamente mediante escáneres de códigos de barras. Un ejemplo de otra tecnología de identificación que está creciendo de forma importante es la idenficiación por radio frecuencia (RFID, radio frequency identification). 1.2 Sistemas de almacenamiento automatizados La función de un sistema de almacenamiento de material es almacenar materiales durante un periodo de tiempo así como permitir el acceso a estos cuando sea requerido. Con el objetivo de mejorar la eficiencia de esta operación, se emplean sistemas de almacenamiento automatizados, reduciendo o eliminando por completo el trabajo manual. Un sistema de almacenamiento automatizado implica una inversión considerable. Sin embargo, las empresas suelen considerar los siguientes objetivos para llevar a cabo la implantación de esos sistemas en sus instalaciones: •Incrementar la capacidad de almacenamiento •Incrementar la densidad de almacenamiento •Recuperar el espacio de la planta dedicado a almacenar productos en proceso •Mejorar la protección y reducir los robos •Mejorar la seguridad en la operación de almacenaje •Disminuir el coste del trabajo y/o aumentar la productividad •Mejorar el control sobre inventarios •Mejorar el movimiento del stock •Mejorar el servicio al cliente •Aumentar las transacciones. Dentro de los tipos de sistema de almacenamiento automatizados destacan dos grandes categorías: los carruseles y los AS/RS. Un carrusel se define como un sistema compuesto de canastas suspendidas de un carril oval y accionadas por un transportador en cadena. Existen dos categorías dentro de este tipo de almacén: 1.3 Estrategias de almacenamiento 3 carrusel vertical y carrusel horizontal. El primero de ellos, aunque cuenta con ventajas relevantes como el ahorro de espacio en planta, es el menos común, suponiendo menos interés que el carrusel horizontal, que será el implementado en la aplicación. El carrusel horizontal cuenta con una configuración en la que los estantes (carriers) están suspendidos del carril y los contenedores (bins) constituyen cada estante. El estudio realizado comprende dos problemas: el dimensionado y la tasa de operación, expuestos posteriormente. Por otro lado, un AS/RS (Automated Storage/Retrieval System) es un sistema de almacentamiento compuesto por uno o más pasillos de estantes de almacenaje asistidos mediante máquinas de almacenamiento/recuperación. El sistema realiza operaciones de almacenado y recuperación con una velocidad y una precisión en función del grado de automatización definido. Cada pasillo cuenta con una o más estaciones de entrada/salida. La grúa mecánica desplaza los elementos a almacenar o recuperar entre estas estaciones y los estantes. Estas estaciones se conocen como pickup-and-deposit stations y se pueden operar manualmente o interconectarse con algún tipo de sistema de transporte automatizado, como cintas transportadoras o vehículos guiados automáticamente. Los tipos principales de AS/RS se recogen a continuación: • Unit-load AS/RS. En general, se trata de un sistema extenso controlado mediante ordenador destinado a sostener unidades de carga en contenedores o paletas. • Deep-lane AS/RS. Consiste en un sistema como el anterior pero de alta densidad, empleado cuando se requiere almacenar una gran cantidad de stock. En vez de almacenar cada unidad de carga de forma que sea directamente accesible para la grúa desde el pasillo, se posicionan una detrás de otra. • Miniload AS/RS. Se emplea para pequeñas cargas almacenadas en contenedores o cajones en el sistema de almacenamiento, de forma que la grúa almacena o recupera todo el contenedor o cajón, devolviéndolo posteriormente a su posición asignada. • Man-on-board AS/RS. Un operario a bordo de la canasta de la grúa recoge elementos individuales directamente de sus localizaciones de almacenaje. • Sistema de recuperación de elementos automatizado. Los elementos, de pequeño tamaño, se almacenan en carriles en vez de en contendores o cajones, siendo empujados desde estos a unas cintas transportadoras que los llevan a la estación de entrada/salida. • VLM (vertical lift modules). Al contrario de los demás tipos de AS/RS expuestos anteriormente, que están diseñados alrededor de un pasillo horizontal, el VLM cuenta con un pasillo vertical. La ventaja principal de ese sistema es el ahorro de espacio en planta. 1.3 Estrategias de almacenamiento A la hora de organizar los elementos almacenados, se pueden considerar varias estrategias, afectando estas al funcionamiento y la eficiencia del sistema. Las dos estrategias básicas empleadas en las operaciones de almacenamiento son almacenamiendo aleatorio y almacenamiento dedicado. Cada uno de estos elementos se denomina SKU (stock-keeping-unit). El SKU identifica de forma única cada tipo de elemento. En almacenamiento aleatorio, los elementos se almacenan en cualquier lugar disponible en el sistema de almacenamiento. En la implementación común del almacenamiento aleatorio, los elementos 4Capítulo 1. Introducción y objetivos que llegan se almacenan en el lugar más cercano disponible y se recuperan en función de la regla firstin-first-out, de forma que se retira el elemento del tipo requerido que más tiempo lleva en el almacén. En almacenamiento dedicado, los SKU se asignan a localizaciones específicas dentro de las instalaciones, de forma que estas posiciones están reservadas para cada tipo de elemento. Los principios según los cuales se definen estas posiciones son fundamentalmente tres: • Los elementos se almacenan según un part-number o una secuencia de número de producto. • Los elementos se almacenan de acuerdo al nivel de actividad, siendo los SKUs más solicitados los que se localizan en las posiciones más cercanas al punto de pick-and-deposit. • Los elementos se almacenan de acuerdo a su ratio de actividad/espacio. Aquellos con mayores ratios se posicionan más cerca de la estación de pick-and-deposit. Cada una de estas estrategias tiene sus ventajas, siendo la fundamental del almacenamiento aleatorio el ahorro de espacio y la del dedicado, mayores tasas de transacciones. Una solución de compromiso entre ambas se encuentra en el almacenamiento dedicado basado en clases, una estrategia en la que el almacén se divide en distintas clases de acuerdo al nivel de actividad, dentro de las cuales se emplea almacenamiento aleatorio. Las clases con SKUs más activos se localizan cerca de la estación de pick-and-deposit, aumentando la tasa de transacciones, mientras que la distribución aleatoria dentro de cada clase reduce el número total de compartimentos requeridos. ([1]) 1.4 Objetivos del trabajo El objetivo general del proyecto es el desarrollo de una herramienta informática capaz de realizar un análisis numérico de los sistemas de almacenamiento automatizados, concretamente, carruseles y AS/RS, arrojando como resultados los tiempos de ciclo y las transacciones para unos datos geométricos y de operación dados, y para diferentes estrategias de almacenamiento. En este trabajo se considerará almacenamiento aleatorio y almacenamiento dedicado basado en clases. Esta herramienta puede tener una aplicación docente siendo de utilidad tanto para alumnos como profesores, ya que la teoría en la que se basa se imparte en asignaturas de ingeniería. Para cumplir dicho objetivo general, se han planteado hitos específicos: 1. Definición de los sistemas a analizar. 2. Resultados numéricos a obtener y formato. 3. Selección de software para desarrollar la herramienta. 4. Elección de métodos a implementar en la aplicación. 5. Definición de los casos que se pueden resolver con la herramienta. 5. Obtención de las expresiones de estos métodos para cada caso. 6. Diseño de cada ventana de la aplicación en función de los datos necesarios y resultados a obtener, así como de los casos posibles de resolver. 6. Implementación de las expresiones obtenidas de los métodos en las ventanas correspondientes. 7. Comparación de los resultados obtenidos con los aportados por la literatura. 1.5 MATLAB 5 1.5 MATLAB Entre las posibilidades de softwares disponibles, se ha elegido MATLAB para el desarrollo de la herramienta por dos motivos, principalmente: • Este software está disponible en su totalidad y no en versiones reducidas en la Universidad de Sevilla, lo que garantiza que cualquier miembro de la institución pueda acceder a él, ya sea mediante una licencia individual como en el Centro de Cálculo. • MATLAB es el lenguaje de programación empleado en asignaturas de ingeniería. Por ello, se puede considerar que, de manera general, los posibles usuarios estarán familiarizados con el lenguaje. El entorno de MATLAB dedicado al desarrollo de aplicaciones se conoce como App Designer. En él, es posible generar una aplicación mediante la inclusión de botones de diverso tipo desde el menú principal, a los que se añaden las funciones de callback programadas para que ejecuten los comandos correspondientes. App Designer es el sucesor del entorno GUI, del que ha evolucionado aunando más funcionalidades y proporcionando una experiencia de programación mucho más factible para desarrolladores principiantes, evitando que sea imprescindible conocer la programación de objetos para crear una interfaz de usuario. 1.6 Estructura de la memoria Para finalizar el primer capítulo de la memoria, se presenta la estructura de esta. • Capítulo 1. A modo de resumen del presente capítulo, se han tratado los conceptos básicos de la manipulación de material, los sistemas de almacenamiento automatizados, las estrategias de almacenamiento empleadas, los objetivos del trabajo y los motivos de la elección del software MATLAB para el desarrollo del proyecto. • Capítulo 2. En el segundo capítulo se ha realizado un análisis de sistemas de almacenamiento automatizados, donde se han concretado los casos considerados, los fundamentos de los métodos empleados (MHI y Bozer-White) y cómo se han extendido estos para obtener las expresiones correspondientes a las estrategias de almacenamiento aleatorio y dedicado basado en clases. • Capítulo 3. El tercer capítulo comprende la fase de implementación en MATLAB con la adaptación de las ecuaciones obtenidas anteriormente, así como la filosofía con la que se ha desarrollado la herramienta. • Capítulo 4. El siguiente capítulo, el cuarto, recoge los resultados de los problemas que se han utilizado de ejemplo y guía, además de una comparativa entre los métodos estudiados amparada por el artículo del que se ha extraído el método de Bozer-White. • Capítulo 5. Para terminar la memoria, se han indicado las conclusiones obtenidas y las posibilidades de líneas futuras de trabajo. • Anexos. Recogen un breve manual de usuario para el arranque de la aplicación y una serie de códigos base utilizados para el desarrollo de esta. 2 Análisis de sistemas de almacenamiento automatizados En este capítulo de la memoria se tratarán los métodos implementados y los casos considerados en el análisis de los sistemas de almacenamiento automatizados, especificando las hipótesis de las que se parte y las expresiones a las que se llega. 2.1 Introducción. Casos considerados La primera apreciación al especificar los casos considerados es dividir el análisis entre los dos sistemas de almacenamiento automatizados elegidos: carrusel y AS/RS. Las estrategias que se van a implementar son almacenamiento aleatorio y almacenamiento dedicado basado en clases, explicadas anteriormente. Las transacciones de un sistema se definen como la tasa horaria a la que el sistema de almacenamiento recibe y coloca las cargas en el interior del almacén y/o recupera y reparte las cargas en la estación de salida. El almacén debe diseñarse en función de las transacciones máximas que se requerirán. La tasa de operación estará limitada por el tiempo con el que se realiza un almacenamiento o una recuperación. Una transacción típica de almacenamiento se compone de: 1. Recogida del elemento de la estación de entrada. 2. Desplazamiento hasta la posición de almacenamiento. 3. Colocación de la carga en la posición de almacenamiento. 4. Regreso a la estación de llegada. Una transacción de recuperación consiste en: 1. Desplazamiento a la posición de almacenamiento. 2. Recogida del elemento del almacén. 3. Viaje a la estación de salida. 4. Descarga en la estación de salida. 7 8Capítulo 2. Análisis de sistemas de almacenamiento automatizados La suma del tiempo empleado en las anteriores acciones es la que define la cantidad de transacciones posibles en el almacén. Las transacciones se pueden aumentar al considerar en una misma operación acciones de almacenamiento y recuperación en un mismo ciclo, reduciendo así el tiempo de desplazamiento. Esto es lo que se conoce como ciclo doble. Si, por el contrario, se realiza solo una de las acciones, almacenamiento o recuperación, en un ciclo, este se define como ciclo simple. Para un sistema en carrusel se considerará almacenamiento aleatorio y ciclos simples, mientras que para AS/RS se analizarán tanto las estrategias de almacenamiento aleatorio y dedicado, considerando ciclos simples y ciclos dobles. Además, es importante tener en cuenta que un almacén no está siempre operativo. Se empleará el concepto de utilización para representar la porción de tiempo que el almacén se puede dedicar a operaciones de almacenamiento y recuperación. Por otro lado, en AS/RS, a diferencia de los carruseles, se van a analizar dos métodos: MHI, a partir de las recomendacioens del Material Handling Institute y el método de Bozer-White, extraído del artículo [2] de estos autores. El método MHI se basa en promediar las distancias de desplazamientos dentro del almacén, a diferencia del método de Bozer y White, que hace lo propio con los tiempos. Se detallarán a continuación los fundamentos de estos métodos, así como las hipótesis y expresiones que los caracterizan. 2.2 Carrusel En este apartado se estudiarán los cálculos referidos a los carruseles, separando en dos partes la resolución: el problema de dimensionado y el problema de tasa de operación. 2.2.1 Método de cálculo Hipótesis Las hipótesis consideradas para el estudio de carruseles con el método indicado se enumeran a continuación: 1. El recorrido medio de diseño se considera una cuarta parte del perímetro. 2. Se tienen en cuenta sólo ciclos simples. 3. La estrategia es de almacenamiento aleatorio. 4. Es posible el movimiento del carrusel en ambas direcciones. 5. Las operaciones se realizan a velocidad constante. 6. Se consideran uno o más carruseles horizontales. 7. Los estantes se disponen equidistantes. Expresiones En primer lugar, se enumeran las variables necesarias: •C : perímetro medio del raíl oval (m o ft). Se define como la suma de dos tramos rectos de longitud L−W más dos veces el perímetro de las dos semicircunferencias 2π 2W que hacen de extremos. Otra posibilidad es definirlo como el producto del número de estantes por el espaciado considerado entre ellos. 2.2 Carrusel 9 •L: longitud del carrusel (m o ft). •W: ancho del carrusel (m o ft). •nc: número de estantes. •nb: número de contenedores en cada estante. •sc : espaciado entre estantes (m o ft). Se considera una constante para todo el almacén gracias a la hipótesis de estantes dispuestos equidistantemente. •p: número de carruseles. •vc: velocidad de movimiento de los estantes del carrusel (m/min o ft/min). •Tpd : tiempo de pick and deposit (s). Se define como el tiempo necesario para recoger o depositar el elemento del contenedor o la unidad de carga/descarga. •Tc : tiempo de ciclo (min). Se define como el tiempo necesario para recorrer un cuarto del perímetro del carrusel más el tiempo de pick and deposit. •U: utilización del carrusel. •Rt : tasa de operación (trans/h). Es el número de transacciones por hora de un carrusel. Se define como la inversa del tiempo de ciclo. •Rt p : tasa de operación total (trans/h). Es el número de transacciones por hora de todos los pasillos. Se define como Rtpor el número de carruseles. Figura 2.1 Esquema con vista en planta y lateral de un carrusel genérico. Una vez definidas todas las variables implicadas, se escriben las expresiones para cada problema. 10 Capítulo 2. Análisis de sistemas de almacenamiento automatizados Problema de dimensionado Para el problema de dimensionado, interesa conocer el perímetro: C=2(L−W)+πW(2.1) el espaciado entre los estantes: sc=C nc (2.2) y el número total de contenedores en el carrusel: n=nbnc(2.3) Problema de tasa de operación Para obtener la tasa de operación del carrusel, en primer lugar, se calcula el tiempo de ciclo mediante la expresión: Tc=C 4vc +Tpd (2.4) pudiendo insertar este valor en: Rt=60U Tc (2.5) Obsérvese que para que la tasa de operación resulte en trans/h es necesario incluir el factor de conversión de minutos a horas en el numerador. En el caso de que haya más de un pasillo, la tasa de operación total se obtiene de Rt p =Rtp . ([ 1 ]) 2.3 AS/RS. MHI Para los cálculos de los tiempos de ciclo y las transacciones con el método MHI se van a considerar las siguientes hipótesis: 1. Se consideran largos períodos de tiempo. 2. Distribución uniforme de los compartimentos del almacén. 3. La máquina S/R se mueve simultáneamente en ambas direcciones a velocidad constante. 4. Los compartimentos del almacén tienen el mismo tamaño. 5. La estación de pick-and-deposit está situada en la esquina inferior izquierda. 6. En la estrategia de almacenamiento dedicado, se considerarán clases iguales y en cada una de ellas se almacenará un tipo distinto de elemento. 7. Para almacenamiento dedicado basado en clases, los ciclos dobles se realizarán dentro de la misma clase. 2.3.1 MHI. Almacenamiento aleatorio El método MHI parte, en primer lugar, del cálculo de unos puntos de referencia que definen los ciclos simple y doble del almacén. Al considerar almacenamiento aleatorio, se van a obtener las 2.3 AS/RS. MHI 11 coordenadas de dos puntos. Como se ha adelantado, se trata de promediar distancias recorridas. Dado un almacén con las siguientes características: •Estación de pick-and-deposit en la esquina inferior izquierda. •L: longitud del AS/RS (m o ft). •H: altura del AS/RS (m o ft). •p: número de pasillos. •vy: velocidad horizontal (m/min o ft/min). •vz: velocidad vertical (m/min o ft/min). •Tpd: tiempo de pick and deposit (s). •U: porcentaje de utilización (%). •Rcd/Rcs: relación entre ciclos dobles y ciclos simples. •Tcs: tiempo de ciclo simple (min). •Tcd: tiempo de ciclo doble (min). •Xcs: coordenada en el eje horizontal del punto medio del almacén (m o ft). •Ycs: coordenada en el eje vertical del punto medio del almacén (m o ft). •Xcd : coordenada en el eje horizontal del punto del almacén situado a 3/4 del origen (m o ft). •Ycd : coordenada en el eje vertical del punto del almacén situado a 3/4del origen (m o ft). •Rcs: ciclos simples por hora (ciclos/h). •Rcd: ciclos dobles por hora (ciclos/h). •Rt: transacciones totales por pasillo por hora (trans/h). •Rt p: transacciones totales de todos los pasillos por hora (trans/h). Figura 2.2 Esquema de las coordenadas de referencia de ciclo simple y ciclo doble considerando almacenamiento aleatorio. 18 Capítulo 2. Análisis de sistemas de almacenamiento automatizados •El factor de forma b: b=minty T,tz T(2.26) El valor del factor de forma es el responsable de que se dividan en dos tipos los almacenes normalizados. Para b=1 , se denominan almacenes cuadrados en el tiempo, esto es, dada la relación entre las dimensiones y las velocidades, la máquina S/R requiere el mismo tiempo para alcanzar la fila y la columna más lejanas. Para b<1 , se denominan almacenes rectangulares en el tiempo, esto es, dada la relación entre las dimensiones y las velocidades, el tiempo que la máquina S/R requiere para viajar a la fila más lejana es distinto de aquel que necesita para alcanzar la columna más lejana. Figura 2.5 Dimensiones del almacén normalizado para almacenamiento aleatorio con el método de Bozer-White. 2.4.2 Almacenamiento aleatorio. Tiempos de ciclo simple y doble para almacenamiento aleatorio y transacciones En este apartado se van a exponer las expresiones para el cálculo de los tiempos de ciclo simple y doble del almacén normalizado empleando la estrategia de almacenamiento aleatorio. Para ello, se definen: •E(SC): el tiempo de ciclo simple del estante normalizado: E(SC) = 1 3b2+1(2.27) •E(TB) : tiempo esperado de desplazamiento entre dos puntos aleatorios del estante normalizado: E(TB) = 1 3+1 6b2−1 30 b3(2.28) •E(DC) : tiempo de ciclo doble del estante normalizado. Se define como la suma del tiempo de ciclo simple y del tiempo esperado de desplazamiento entre dos puntos aleatorios, ambos para el estante normalizado: E(DC) = E(SC)+E(T B) = 4 3+1 2b2−1 30 b3(2.29) •Tcs: el tiempo de ciclo simple en unidades de tiempo (min): Tcs =E(SC)T+2Tpd (2.30) 2.4 AS/RS. Bozer y White 19 •Tcd: tiempo de ciclo simple en unidades de tiempo (min): Tcd =E(DC)T+4Tpd (2.31) Una vez obtenidos estos valores, es posible obtener la transacciones del pasillo empleando las expresiones 2.32 y 2.33. En el caso de que se tenga más de un pasillo, se puede obtener el valor de las transacciones totales multiplicando Rtpor el número de pasillos. RcsTcs +RcdTcd =60U(2.32) Rt=Rcs +2Rcd (2.33) 2.4.3 Extensión a almacenamiento dedicado basado en clases Para el método de Bozer-White se han estudiado dos procedimientos para la extensión a almacenamiento dedicado basado en clases. La primera forma de cálculo se reduce a una simplificación en la obtención de los tiempos de ciclo, mientras que la segunda aporta los resultados exactos. En ambos, existe la posibilidad de configurar el almacén horizontal o verticalmente. Al realizar esta extensión, aparece un problema, puesto que ya no sirven las mismas expresiones en almacenamiento aleatorio debido a que en el promedio de tiempos la estación de pick-and-deposit se encuentra desplazado. Esto se resuelve en cada uno de los cálculos de forma distinta. Cálculo simplificado de tiempos de ciclo En primer lugar, se analizará la configuración horizontal y, posteriormente, se presentará la adaptación a la configuración vertical. Se supone que el recorrido de ciclo simple (figura 2.6) se realiza desde el punto de pick-and- deposit hasta la esquina inferior izquierda de la clase que se está analizando y posteriormente, de la esquina hasta un punto aleatorio. Además, el retorno se hace siguiendo el mismo camino. Así, se resuelve el problema mencionado anteriormente según el cálculo simplificado. Figura 2.6 Configuración horizontal para el cálculo simplificado de tiempos de ciclo de almacenamiento dedicado basado en clases de Bozer-White. En primer lugar, para cada clase de dimensiones Li=L/nyHi=H, se obtiene: 20 Capítulo 2. Análisis de sistemas de almacenamiento automatizados •Los tiempos: tyi =L/n vy tzi =H vz (2.34) •El valor de Tiy del factor de forma: Ti=Maxtyi,tzibi=Mintyi Ti ,tzi Ti(2.35) En base a esta simplificación, el tiempo de ciclo simple para una clase i se puede definir como sigue: Tcsi =2(i−1) vy L n+Ti1+b2 i 3+2Tpd (2.36) Mientras que el tiempo de ciclo doble i se definiría como la suma del tiempo de ciclo simple obtenido más el tiempo correspondiente al desplazamiento entre dos puntos aleatorios de la misma clase i: Tcdi =2(i−1) vy L n+Ti 30 40 +15b2 i−b3 i+4Tpd (2.37) Para el caso de la configuración vertical (2.9), el procedimiento es análogo, pero considerando, en este caso, que el desplazamiento rectilíneo se realiza en la dirección vertical. En las expresiones de la normalización, solo varía el cálculo de los tiempos tyi y tzi , ya que las dimensiones de las clases difieren: tyi =L vy tzi =H/n vz (2.38) Dado que ahora el desplazamiento es en vertical en el tramo recto, la diferencia entre las expresiones que siguen y las anteriores radica en la velocidad y la distancia que se toma: Tcsi =2(i−1) vz H n+Ti1+b2 i 3+2Tpd (2.39) Tcdi =2(i−1) vz H n+Ti 30 40 +15b2 i−b3 i+4Tpd (2.40) 2.4 AS/RS. Bozer y White 21 Figura 2.7 Configuración vertical para el cálculo simplificado de tiempos de ciclo de almacenamiento dedicado basado en clases de Bozer-White. El objetivo de incluir este cálculo simplificado es que sirva de cota superior para los tiempos de ciclo para el cálculo exacto. Esto es, con ellas, se obtendrán unos valores de tiempos de ciclos mayores (y por tanto menos transacciones) que, comparados con los cálculos exactos, darán indicios de que este segundo procedimiento arroja resultados que son correctos. Cálculo exacto de los tiempos de ciclo Tras estudiar la estrategia anterior, se incluye también el cálculo exacto de los tiempos de ciclo con un procedimiento relativamente más complejo. Al igual que en el apartado anterior, en primer lugar se analizará la configuración horizontal y, posteriormente, se extenderá a la configuración vertical. Para cada clase, se considerarán 3 almacenes: la propia clase, i , el almacén completo desde la primera clase hasta la anterior, i−1 , y el almacén completo hasta la clase i , que se denominará 1i . Este modo de proceder es posible ya que los almacenes i−1 y 1i tienen la estación de pick-and-deposit en la misma posición, como se puede ver en la figura 2.9. Por este motivo, como la clase i no contiene a la estación de pick-and-deposit, los valores referidos a dicha sección son las incógnitas del problema. •Clase i−1: se calcula la normalización. tyi−1=(i−1)L/n vy tzi−1=H vz (2.41) 22 Capítulo 2. Análisis de sistemas de almacenamiento automatizados Ti−1=Maxtyi−1,tzi−1bi−1=Mintyi−1 Ti−1 ,tzi−1 Ti−1(2.42) •Clase 1i: se calcula la normalización. tv1i=iL n vy tz1i=H vz (2.43) T1i=Max{tv1i,tz1i}b1i=Mintv1i T1i ,tz1i T1i(2.44) •Clase i: los tiempos de ciclo de esta clase son las incógnitas para cada valor de i. Figura 2.8 Configuración horizontal para el cálculo exacto de tiempos de ciclo de almacenamiento dedicado basado en clases de Bozer y White. Ya que se considera el almacén como un continuo, con el enfoque probabilístico de Bozer y White se puede expresar el tiempo de ciclo del almacén 1i como la suma de los tiempos de ciclo de los almacenes i−1 e i ponderados con su área relativa a la del almacén 1i . Entonces, se puede expresar lo siguiente: iL nH·E(SC1i) = (i−1)L nH·E(SCi−1)+ L nH·E(SCi)(2.45) En la expresión anterior se puede despejar la incógnita E(SCi), de forma que resulta: 2.4 AS/RS. Bozer y White 23 E(SCi) = iE(SC1i)−(i−1)E(SCi−1)(2.46) Para calcular el tiempo de ciclo doble de la clase i , se considera el tiempo de ciclo simple y el tiempo de desplazamiento entre dos puntos aleatorios de dicha clase i: E(DCi) = E(SCi)+E(T Bi)(2.47) donde el tiempo de desplazamiento entre dos puntos aleatorios se calculará como: E(TBi) = Ti 30 10 +5b2 i−b3 i(2.48) Las expresiones necesarias para obtener los tiempos de ciclos en minutos se adaptarán multiplicando a cada sumando el parámetro de tiempo de la clase correspondiente. Tcsi =iT1i1+b2 1i 3−(i−1)Ti−1 1+b2 i−1 3!+2Tpd (2.49) En función de los tiempos normalizados obtenidos anteriormente se puede expresar como: Tcsi =iT1iE(SC1i)−(i−1)Ti−1E(SCi−1)+2Tpd (2.50) El tiempo de ciclo doble será: Tdci =iT1i1+b2 1i 3−(i−1)Ti−1 1+b2 i−1 3!+Ti 30 10 +5b2 i−b3 i+4Tpd (2.51) Que también se puede expresar de forma más simple en función de las variables ya calculadas: Tdci =Tcsi +E(TBi)Ti+2Tpd (2.52) donde se ha tenido en cuenta que el tiempo de ciclo simple ya contiene 2Tpd. A continuación, se muestra el procedimiento para el cálculo de tiempos de ciclo para la configuración vertical, que es análogo al anterior. Para cada clase, se considerarán 3 almacenes: la propia clase, i , el almacén completo desde la primera clase hasta la anterior, i−1, y el almacén completo hasta la clase i, que se denominará 1i. •Clase i−1: se calcula la normalización. tyi−1=L vy tzi−1=(i−1)H/n vz (2.53) •Clase 1i: se calcula la normalización. tv1i=L vy tz1i=iH n vz (2.54) •Clase i: los tiempos de ciclo de esta clase son las incógnitas para cada valor de i. 24 Capítulo 2. Análisis de sistemas de almacenamiento automatizados Figura 2.9 Configuración vertical para el cálculo exacto de tiempos de ciclo de almacenamiento dedicado basado en clases de Bozer y White. El resto de las expresiones son idénticas, ya que la configuración se tiene en cuenta a la hora de calcular el parámetro Ty el factor de forma ben cada almacén. ([2],[3]) Cálculo de transacciones Al igual que en MHI, el análisis se subdivide en dos, en función de los datos de entrada: porcentajes de transacciones por clase o procentajes de tiempo de utilización por clase. Para el primer caso, se emplean las ecuaciones 2.20 y 2.21, mientras que para el segundo, se utilizan 2.22 y 2.23. En cada caso se obtiene un sistema de n+1 ecuaciones con n+1 incógnitas una vez se aplican las relaciones entre ciclos dobles y simples de cada clase. 3 Implementación en MATLAB Las expresiones de los métodos expuestas en el capítulo anterior se han adaptado para poder implementarlas en MATLAB, de forma que, empleando recursos de programación, ha sido posible introducirlas en distintos códigos que tienen como entrada los datos típicos de un problema de cálculo de sistemas de almacenamiento automatizados, como dimensiones y velocidades, y que arrojan como resultado los correspondientes tiempos de ciclo y número de transacciones. Esta sección se ha destinado también a un análisis del diseño de la herramienta informática, así como a la exposición de la estructura interna, con el obejtivo de mostrar en detalle el procedimiento seguido a la hora de desarrollarla y cuáles han sido los elementos clave. Cabe destacar que, aunque se ha implementado un tercer método para el análisis de AS/RS que ha permanecido en la aplicación, este no se ha estudiado al mismo nivel que los demás, puesto que se considera una línea futura de trabajo (se explicará en el último capítulo de la memoria) que escapa al alcance de este proyecto. 25 26 Capítulo 3. Implementación en MATLAB 3.1 Storage Calculator. Introducción El nombre que se le ha dado a la aplicación es Storage Calculator. En el diseño de Storage Calculator se ha dado importancia fundamentalmente a que sea una aplicación intuitiva e interactiva, de forma que la funcionalidad de todos los botones sea clara y siempre exista un aporte teórico en el caso de que se necesite o quiera consultarse. En cada una de las ventanas emergentes se ha individualizado la disposición de los elementos para optimizar el espacio y seguir un orden lógico datos-resultados. Las ventanas se han clasificado en tres tipos: de diálogo, de ayuda y de cálculo. Por un lado, las ventanas de diálogo son aquellas que permiten elegir el tipo de problema a realizar y navegar entre los distintos archivos. Las ventanas de ayuda, por otro lado, exponen un aporte teórico relativo a los diálogos y los cálculos, según corresponda. Por último, las ventanas de cálculo son aquellas destinadas a que se introduzcan datos y proporcionen resultados, en concordancia con los métodos estudiados en los apartados anteriores. Al iniciar la aplicación, aparece una pantalla principal (figura 3.1) en la que se puede seleccionar el tipo de sistema de almacenamiento automatizado que se quiere analizar: carrusel o AS/RS. Figura 3.1 Esquema de archivos de carruseles de Storage Calculator. El archivo que se ejecuta es StorageCalculator.mlapp. De él, parten los siguientes archivos en función de la selección de sistema: •Storage Calculator −→StorageCalculator.mlapp –Carrusel −→carruselA.mlapp –AS/RS −→ portada.mlapp A continuación, se separará la implementación y la exposición de la estructura interna según el tipo de sistema: primero carrusel y después, AS/RS. En cada una de las secciones se mostrarán, además, los archivos organizados por ventana. 3.2 Carrusel 27 3.2 Carrusel En este apartado, se describe la parte de la aplicación referente al carrusel. Del archivo carruselA.mlapp, tan solo cuelga ayuda1.mlapp. El botón ”Atrás” permite regresar a la pantalla principal de Storage Calculator (StorageCalculator.mlapp). Dado que no se han implementado más modelos para comparar, no existen tantos botones, con sus archivos respectivos, como en los casos que se verán posteriormente asociados al AS/RS. Al seleccionar el carrusel, aparece el ménu de este sistema (carruselA.mlapp, figura 3.2), donde se pueden rellenar los datos y obtener los resultados pulsando los botones de calcular. Es posible consultar la ayuda (ayuda1.mlapp, figura 3.3) pulsando el botón correspondiente. En el archivo carruselA.mlapp está implementado el código con las ecuaciones 2.1-2.3 para el problema de dimensionado y 2.4-2.5 para el problema de tasa de operación que se expusieron en el apartado de teoría, de forma que los resultados serán los mismos que los obtenidos a mano, salvando los errores numéricos que arrastra MATLAB por su funcionamiento interno. La ayuda ayuda1.mlapp proporciona información referente a qué es cada una de las variables que aparece en pantalla y una descripción de qué es un carrusel, además de mostrar las expresiones de la teoría, definiendo los parámetros necesarios. Este patrón de diseño se repite en cada una de las ayudas que se han generado para una mayor comprensión de cómo procede Storage Calculator. El árbol de archivos correspondiente es: •Carrusel −→carruselA.mlapp –Ayuda −→ ayuda1.mlapp –Atrás −→StorageCalculator.mlapp Figura 3.2 Menú de carrusel de Storage Calculator. 34 Capítulo 3. Implementación en MATLAB En el caso de seleccionar el método MHI, se abre una pantalla de diálogo (AAvsADBC.mlapp, figura 3.10) en la que se puede elegir si se desea resolver un problema de almacenamiento aleatorio o dedicado basado en clases. Se incluye un botón de ayuda (ayuda3.mlapp, figura 3.11). Figura 3.10 Ventana para elegir entre almacenamiento aleatorio y dedicado en AS/RS de Storage Calculator. Figura 3.11 Pantalla de ayuda para seleccionar estrategia de AS/RS de Storage Calculator. Almacenamiento aleatorio Al elegir almacenamiento aleatorio, emerge la ventana de la figura 3.12 (almacenamientoaleatorio.mlapp), donde se pueden realizar los cálculos de tiempo de ciclo y transacciones una vez introducidos los datos del problema. Las ecuaciones que se han introducido para obtener estos valores son las expresiones 2.6-2.7 para el cálculo de tiempos de ciclo simple y doble y 2.8-2.9 para el cálculo de las transacciones. 3.3 AS/RS 35 Figura 3.12 Ventana de cálculo de almacenamiento aleatorio de AS/RS de Storage Calculator. En el botón destinado a la ayuda (ayuda4.mlapp) aparecen dos pestañas (figura 3.13). En la primera, se describen las variables de los datos y los resultados. En la segunda, se representan las coordenadas de los puntos de referencia de ciclo simple y ciclo doble, además de su cálculo. En la zona destinada a las ecuaciones, se presentan las expresiones necesarias para los cálculos de tiempos de ciclos y de transacciones. En cuanto al botón de comparación con otros métodos, al pulsarlo se ejecuta el archivo comp1.mlapp, del que emerge una ventana (figura 3.14) dos partes diferenciadas: en la zona de la izquierda aparecen los resultados obtenidos para el método MHI, mientras que la zona de la derecha muestra los correspondientes al método de Bozer-White. Las ecuaciones necesarias para realizar los cálculos de Bozer-White se encuentran implementadas en el código de la ventana de cálculo de almacenamiento aleatorio de MHI, de forma que se ejecutan los comandos correspondientes al seleccionar el botón de comparación. Dichas ecuaciones corresponden con las expresiones 2.24-2.31 para el cálculo de los tiempos de ciclo simple y doble y con 2.32-2.33 para la obtención de las transacciones. En el caso de que se seleccione el botón de almacenamiento dedicado en la figura 3.10, si se elige n=1para cualquiera de los dos tipos de datos de entrada, se abren ventanas equivalentes a las de almacenamiento aleatorio. 36 Capítulo 3. Implementación en MATLAB Figura 3.13 Ventana de ayuda de almacenamiento aleatorio de AS/RS de Storage Calculator. Figura 3.14 Ventana de comparación Bozer-White de almacenamiento aleatorio de AS/RS de Storage Calculator. 3.3 AS/RS 37 Almacenamiento dedicado basado en clases Expresiones adaptadas para la implementación Para comenzar este apartado, se van a comentar las expresiones que se han implementado en los códigos, haciendo uso de recursos de programación como bucles. Las ecuaciones para el cálculo de los tiempos de ciclo simple y doble que se han empleado son 2.18-2.19 para cada clase, empleando para ello un bucle for, sin tener que variar las expresiones. Sin embargo, para las transacciones, se ha optado por adaptarlas como sigue, dividiendo los casos según los datos de entrada. Se denomina ri , por sencillez en las ecuaciones, a la relación de ciclos dobles entre ciclos simples de la clase i. • Datos de entrada: porcentajes de transacciones por clase. Se obtiene primero la expresión para calcular los ciclos simples, Rcs a partir de la ecuación 2.20: Rcsi =RtiRt 1+2ri (3.1) Esta expresión se sustituye en los siguientes pasos, buscando despejar Rt de la ecuación 2.21, para lo que hay que operar: n ∑ i=1 (RcsiTcsi +RcdiTcdi) = n ∑ i=1 (RcsiTcsi +riRcsiTcdi) = Rcsi n ∑ i=1 (Tcsi +riTcdi) = n ∑ i=1 RtiRt 1+2ri (Tcsi +riTcdi) = Rt n ∑ i=1 Rti 1+2ri (Tcsi +riTcdi) = 60U (3.2) Despejando Rt, se obtiene: Rt=60U ∑n i=1 Rti 1+2ri(Tcsi +riTcdi)(3.3) Las expresiones implementadas son 3.1 y 3.3 para la obtención de las transacciones por hora de cada clase y del pasillo completo. Para calcular las transacciones de todos los pasillos, basta con multiplicar Rtpor el número de pasillos, p. •Datos de entrada: porcentajes de tiempo de utilización por clase Se obtiene, en primer lugar, despejando Rcsi de la ecuación 2.22: Rcsi =60U Tcsi +riTcdi Ui(3.4) Esta expresión se introduce en un bucle for con un contador i=1 : n , calculando así todos los ciclos simples de cada clase. Tras esto, y modificando la expresión 2.23 para que solo dependa de Rcsi, las transaccioens totales por pasillo son: Rt= n ∑ i=1 (Rcsi +2Rcdi) = (1+2ri) n ∑ i=1 Rcsi (3.5) 38 Capítulo 3. Implementación en MATLAB Las expresiones implementadas son 3.4 y 3.5 para la obtención de las transaccines por hora de cada clase y del pasillo completo. Para calcular las transacciones de todos los pasillos, basta con multiplicar Rtpor el número de pasillos, p. Desglose de ventanas Los casos de almacenamiento dedicado basado en clases con el método MHI (figura 3.15) se analizan a continuación. Se pueden consultar para ello el botón de ayuda (ayuda6.mlapp, figura 3.16), donde se explica el rango posible de n y los dos tipos de datos de entrada que se pueden seleccionar, así como su implicación en la resolución. De forma excepcional, se ha programado la opción de que se abran paralelamente todos los casos posibles siempre que lo requiera el usuario, facilitando la comparación entre los resultados para distintas clases. En primer lugar, si se selecciona un número de clases n fuera del rango [1,5] , aparece un mensaje de error (ERROR1.mlapp) que avisa al usuario de que no es posible utilizar esos valores (figura 3.17). Si, por otro lado, se seleccionan un valor dentro del rango admitido y una de las opciones de datos, emerge una ventana destinada a introducir los datos del problema y donde se puede seleccionar cómo resolverlo. A modo de ejemplo, se explicarán detalladamente las ventanas correspondientes a n=2 , ya que es el caso más utilizado en los problemas. Posteriormente, se mostrarán los demás casos en figuras. Figura 3.15 Ventana de selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator. 3.3 AS/RS 39 Figura 3.16 Ventana de ayuda para la selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator. Figura 3.17 Ventana error en la selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator. Para el valor de n=2 , al seleccionar como dato de entrada el porcentaje de transacciones por clase, emerge la ventana (PTR2.mlapp) de la figura 3.18. En la zona de la izquierda, se pueden rellenar los datos del problema. En la caja que indica ”DIVIDIR”, se puede elegir la configuración del almacén, esto es, si se quiere dividir horizontal o verticalmente. Si se selecciona la opción óptima, el criterio de selección será el expuesto en la teoría. Todos estos datos y resultados pueden entenderse con el botón de ayuda (ayuda8.mlapp), cuya ventana se muestra en la figuras 3.20 y 3.21. •En la primera pestaña se define cada una de las variables involucradas en el cálculo. • En las dos pestañas siguientes se muestran las dos posibles configuraciones, así como las expresiones necesarias para calcular en cada una las coordenadas de los puntos de referencia de ciclo simple y doble. • En la última, se exponen las ecuaciones necesarias para resolver el problema, donde es necesario destacar que las expresiones del cálculo de transacciones difieren con respecto a la situación en la que los datos de entrada son los porcentajes de tiempo de utilización de cada una de las clases. Además, se incluye el botón de comparación con el método de Bozer y White (comp2.mlapp, figura 3.23), similar al mostrado en el caso de almacenamiento aleatorio, pero añadiendo los correspondientes campos para más clases. La solución será calculada a partir de las ecuaciones 3.1-3.3 de la sección correspondiente a los porcentajes de transacciones de cada clase como datos de entrada. 40 Capítulo 3. Implementación en MATLAB A continuación, se muestra en la Figura 3.19 la ventana de cálculo (PTU2.mlapp) que aparece al seleccionar, para el mismo número de clases, n=2 , los datos de entrada que corresponden al porcentaje de tiempo de utilización. La diferencia entre la apariencia de las ventanas radica solamente en la entrada de datos. Sin embargo, a la hora de utilizar la ayuda asociada (ayuda9.mlapp, figura 3.22), la pestaña de análisis sí muestra diferencias, ya que las expresiones implementadas en este caso son distintas a las anteriores. La solución será calculada a partir de las ecuaciones y recursos de programación expuestos en el apartado de implementación del método MHI en la teoría, en la sección correspondiente a los porcentajes de tiempo de utilización de cada clase como datos de entrada. Las ventanas correspondientes a los casos n=3,4,5son análogas a las mostradas para n=2. Figura 3.18 Ventana de cálculo para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. Figura 3.19 Ventana de cálculo para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. 3.3 AS/RS 41 Figura 3.20 Ventana de ayuda (las dos primeras pestañas) para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. 42 Capítulo 3. Implementación en MATLAB Figura 3.21 Ventana de ayuda (las dos últimas pestañas) para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. 3.3 AS/RS 43 Figura 3.22 Ventana de ayuda (pestaña de análisis) para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. Las tres pestañas que no se muestran son idénticas a las de la ayuda correspondiente al caso de porcentaje de transacciones por clase. Figura 3.23 Ventana de comparación entre métodos y estrategias para n=2 de AS/RS de Storage Calculator. 50 Capítulo 3. Implementación en MATLAB Figura 3.32 Ventana de comparación de métodos para n=5de AS/RS de Storage Calculator. Entre estas figuras no se han añadido las ayudas porque, como se aprecia en la tabla 3.3, se repiten para n>1en cada caso, respectivamente. 3.3.2 Método de Bozer-White Por claridad, como se hizo para el método MHI, se va a definir una lista con los programas que se ejecutan al pulsar cada botón. Posteriormente, se explicará cada uno. Los siguientes archivos cuelgan del botón Bozer-White, desde la portada de AS/RS, el nivel superior, hasta cada ventana de cálculo, el nivel inferior. A partir del archivo AAvsADBC-BW.mlapp: •Ventana de diálogo para elegir estrategia de almacenamiento −→AAvsADBC-BW.mlapp –Atrás −→portada.mlapp –Ayuda −→ ayuda3.mlapp –Almacenamiento aleatorio −→ BW-aleatorio.mlapp 3.3 AS/RS 51 - Atrás −→ AAvsADBC-BW.mlapp - Ayuda −→ ayuda1-BW.mlapp - Comparación con MHI y entre estrategias −→comp1.mlapp –Almacenamiento dedicado basado en clases −→ PTRvsPTUyNCI-BW.mlapp - Atrás −→ AAvsADBC-BW.mlapp - Ayuda −→ ayuda6.mlapp - % Transacciones por Clase a) Si n<1on>5−→ERROR1.mlapp b) Para los demás valores de n, tabla 3.4. - % Tiempo de Utilización por Clase a) Si n<1on>5−→ERROR1.mlapp b) Para los demás valores de n, tabla 3.5. Tabla 3.4 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de transacciones por clase. n Ventana de Cálculo Ayuda Comparación con MHI y entre estrategias 1PTR1-BW.mlapp ayuda1-BW.mlapp comp1.mlapp 2PTR2-BW.mlapp ayuda8-BW.mlapp comp2.mlapp 3PTR3-BW.mlapp ayuda8-BW.mlapp comp3.mlapp 4PTR4-BW.mlapp ayuda8-BW.mlapp comp4.mlapp 5PTR5-BW.mlapp ayuda8-BW.mlapp comp5.mlapp Tabla 3.5 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de tiempo de utilización por clase. n Ventana de Cálculo Ayuda Comparación con MHI y entre estrategias 1PTU1-BW.mlapp ayuda1-BW.mlapp comp1.mlapp 2PTU2-BW.mlapp ayuda9-BW.mlapp comp2.mlapp 3PTU3-BW.mlapp ayuda9-BW.mlapp comp3.mlapp 4PTU4-BW.mlapp ayuda9-BW.mlapp comp4.mlapp 5PTU5-BW.mlapp ayuda9-BW.mlapp comp5.mlapp En el caso de seleccionar el método Bozer y White, se abre una pantalla de diálogo (AAvsADBC- BW.mlapp, figura 3.10) en la que se puede elegir si se desea resolver un problema de almacenamiento aleatorio o dedicado basado en clases. Se incluye un botón de ayuda (ayuda3.mlapp, figura 3.11). Estas pantallas son iguales que las correspondientes al método MHI. Almacenamiento aleatorio Al elegir almacenamiento aleatorio, emerge la ventana de la figura 3.33 (BW-aleatorio.mlapp), donde se pueden realizar los cálculos de tiempo de ciclo y transacciones una vez introducidos los datos del problema. 52 Capítulo 3. Implementación en MATLAB Las ecuaciones que se han introducido para obtener estos valores son las expresiones 2.24-2.26 para la normalización del almacén, 2.27-2.31 para el cálculo de tiempos de ciclo simple y doble y 2.32-2.33 para el cálculo de las transacciones. Figura 3.33 Ventana de cálculo de almacenamiento aleatorio de AS/RS de Storage Calculator. En el botón destinado a la ayuda (ayuda1-BW.mlapp) aparecen dos pestañas (figura 3.34). En la primera, se describen las variables de los datos y los resultados. En la segunda, se representa el estante adimensionalizado con las expresiones que se han empleado para obtener los resultados de tiempos de ciclos y de transacciones de la ventana de cálculo. En cuanto al botón de comparación con MHI y entre estrategias, al pulsarlo se ejecuta el archivo comp1.mlapp, que es el mismo que para el método explicado anteriormente. Además de comparar con MHI, se pueden obtener los resultados para ambas estrategias en Bozer-White con los mismos datos de entrada. Las ecuaciones necesarias para realizar los cálculos de MHI se encuentran implementadas en el código de la ventana de cálculo de almacenamiento aleatorio de Bozer-White, de forma que se ejecutan los comandos correspondientes al seleccionar el botón de comparación. Dichas ecuaciones corresponden con las expresiones 2.6-2.7 para el cálculo de los tiempos de ciclo simple y doble y con 2.8-2.9 para la obtención de las transacciones. En el caso de que se seleccione el botón de almacenamiento dedicado en la figura 3.10, si se elige n=1para cualquiera de los dos tipos de datos de entrada, se abren ventanas equivalentes a las de 3.3 AS/RS 53 almacenamiento aleatorio, al igual que sucedía con MHI. Figura 3.34 Ventana de ayuda de almacenamiento aleatorio de AS/RS de Storage Calculator. 54 Capítulo 3. Implementación en MATLAB Almacenamiento dedicado basado en clases Expresiones adaptadas para la implementación Para comenzar este apartado, se van a comentar las expresiones que se han implementado en los códigos, haciendo uso de recursos de programación como bucles. Las ecuaciones para el cálculo de los tiempos de ciclo simple y doble que se han empleado son •Para el cálculo simplificado: – Configuración horizontal: la normalización se realiza con 2.34, 2.35 y los tiempos de ciclo se calculan con 2.36-2.37 – Configuración vertical:la normalización se realiza con 2.38, 2.35 y los tiempos de ciclo se calculan con 2.39-2.40. •Para el cálculo exacto: –Configuración horizontal: la normalización se realiza con 2.43 y 2.44. –Configuración vertical: la normalización se realiza con 2.54 y 2.44 –El cálculo de los tiempos, una vez definida la geometría, se realiza con 2.46-2.51. Dado que, una vez obtenidos los tiempos de ciclo correspondientes según la estrategia y la configuración, el cálculo de las transacciones se ejecuta igual que en MHI, considerando los dos casos de entrada: • Datos de entrada: porcentajes de transacciones por clase. Las expresiones implementadas son 3.1 y 3.3 para la obtención de las transacciones por hora de cada clase y del pasillo completo. Para calcular las transaccioens de todos los pasillos, basta con multiplicar Rt por el número de pasillos, p. • Datos de entrada: porcentajes de tiempo de utilización por clase. Las expresiones implementadas son 3.4 y 3.5 para la obtención de las transaccioens por hora de cada clase y del pasillo completo. Para calcular las transacciones de todos los pasillos, basta con multiplicar Rtpor el número de pasillos, p. Desglose de ventanas Los casos de almacenamiento dedicado basado en clases con el método Bozer-White (figura 3.15) se analizan a continuación. Se puede consultar para ello el botón de ayuda (ayuda6.mlapp, figura 3.16), donde se explica el rango posible de n y los dos tipos de datos de entrada, así como su implicación en la resolución, que se pueden seleccionar, al igual que ocurría con MHI. Se ha programado la opción de que se abran paralelamente todos los casos posibles siempre que lo requiera el usuario, facilitando la comparación entre los resultados para distintas clases, para que se pueda utilizar de la misma forma que el método anterior. En primer lugar, si se selecciona un número de clases n fuera del rango [1,5] , aparece un mensaje de error (ERROR1.mlapp) que avisa al usuario de que no es posible utilizar esos valores (figura 3.17). Si, por otro lado, se seleccionan un valor dentro del rango admitido y una de las opciones de datos, emerge una ventana destinada a introducir los datos del problema y donde se puede seleccionar cómo resolverlo. A modo de ejemplo, como se hizo anteriormente, se explicarán detalladamente las ventanas correspondientes a n=2. Posteriormente, se mostrarán los demás casos en figuras. 3.3 AS/RS 55 Para el valor de n=2 , al seleccionar como dato de entrada el porcentaje de transacciones por clase, emerge la ventana (PTR2-BW.mlapp) de la figura 3.35. En la zona de la izquierda, se pueden rellenar los datos del problema. En la caja que indica ”DIVIDIR”, se puede elegir la configuración del almacén, esto es, si se quiere dividir horizontal o verticalmente. Si se selecciona la opción óptima, el criterio de selección será el expuesto en la teoría. Además, es posible elegir entre el cálculo simplificado (estrategia 1) y el cálculo exacto (estrategia 2) en el cajón donde indica ”ESTRATEGIA”. A continuación, se muestra en la figura 3.36 la ventana de cálculo (PTU2-BW.mlapp) que aparece al seleccionar, para el mismo número de clases, n=2 , los datos de entrada que corresponden al porcentaje de tiempo de utilización. La diferencia entre la apariencia de las ventanas radica solamente en la entrada de datos. Las ecuaciones implementadas en cada pantalla de cálculo son aquellas expuestas al principio de esta sección, considerando cada caso de datos de entrada, estrategia y configuración posibles. Todos estos datos y resultados pueden entenderse con el botón de ayuda (ayuda8-BW.mlapp para porcentajes de transacciones por clase como datos de entrada y ayuda9-BW.mlapp para porcentajes de tiempo) en cada caso: • En la primera pestaña se define cada una de las variables involucradas en el cálculo (parte superior de la figura 3.37 para la estrategia 1 y de la figura 3.38 para la estrategia 2). • En las dos pestañas siguientes se muestran las dos posibles configuraciones, así como las expresiones necesarias para obtener los tiempos de ciclo para el cálculo simplificado (figura 3.39). • En las dos pestañas posteriores se muestran las dos posibles configuraciones, así como las expresiones necesarias para obtener los tiempos de ciclo para el cálculo exacto (figura 3.40). • En la última, se exponen las ecuaciones necesarias para resolver el problema, donde es necesario destacar que las expresiones del cálculo de transacciones (parte inferior de la figura 3.37) difieren con respecto a la situación en la que los datos de entrada son los porcentajes de tiempo de utilización (parte inferior de la figura 3.38) de cada una de las clases. Además, se incluye el botón de comparación con MHI y entre estrategias (comp2.mlapp, figura 3.23), similar al mostrado en el caso de almacenamiento aleatorio, pero añadiendo los correspondientes campos para más clases, de la misma forma que se hizo para el método anterior. De hecho, se han programado los archivos de comparación para que se puedan ejecutar los mismos en los dos métodos, causando así una disminución en la cantidad de programas necesarios. Por este motivo, no se mostrarán a continuación dichas pantallas, sino que se hará referencia a las expuestas en la implementación del método MHI. Las ventanas correspondientes a los casos n=3,4,5son análogas a las mostradas para n=2. 56 Capítulo 3. Implementación en MATLAB Figura 3.35 Ventana de cálculo para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. Figura 3.36 Ventana de cálculo para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. 3.3 AS/RS 57 Figura 3.37 Ventana de ayuda para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. Pestañas de datos y resultados y análisis.. 58 Capítulo 3. Implementación en MATLAB Figura 3.38 Ventana de ayuda para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. Pestañas de datos y resultados y análisis.. 3.3 AS/RS 59 Figura 3.39 Ventana de ayuda para n=2 de AS/RS de Storage Calculator. Pestañas de configuración horizontal y vertical para el cálculo simplificado.. 4 Resultados. Ejemplos de aplicación Este capítulo está destinado a exponer cómo se ha puesto a prueba la herramienta informática para el análisis de sistemas de almacenamiento automatizados. Para ello, se van a resolver varios problemas. •Carrusel: – Problema 1: se resolverá un problema de dimensionado y tasa de operación para un carrusel, comparando los valores obtenidos mediante la aplicación y los procedentes de la literatura. •AS/RS: – Problema 2: se realizará una comparación entre los resultados obtenidos por la aplicación y las tablas que aparecen en el artículo de Bozer y White, comparando su método y el MHI con los valores de tiempo de un estante discreto. – Problema 3: se resolverá un problema de almacenamiento aleatorio mediante el método MHI, procedente de la literatura. Se hará una comparación con los resultados obtenidos mediante el método de Bozer-White. – Problema 4: se resolverá un problema de almacenamiento aleatorio mediante el método de Bozer y White, procedente de la literatura. Se hará una comparación con los resultados obtenidos mediante el método MHI. – Problema 5: se resolverá un problema de almacenamiendo dedicado basado en dos clases con una distribución del almacén de 2 clases iguales, resolviéndolo para las configuración horizontal mediante ambos métodos teniendo como datos de entrada los porcentajes de transacciones por clase. – Problema 6: se resolverá el problema anterior empleando la configuración vertical. – Problema 7: se resolverá el problema 5 teniendo como datos de entrada los porcentajes de tiempo de utilización de cada clase. – Problema 8: se resolverá el problema anterior empleando la configuración vertical. 67 68 Capítulo 4. Resultados. Ejemplos de aplicación 4.1 Carrusel 4.1.1 Problema 1 Problema 1. El raíl oval de un sistema de almacenamiento en carrusel cuenta con 12 m de longitud y 0.5 m de ancho. Hay 75 portadores espaciados equidistantemente a lo largo del raíl oval. Hay 6 contenedores suspendidos de cada uno de estos portados. La velocidad de operación del carrusel es de 20 m/min. El tiempo medio de pick-and-deposit para una recuperación es de 20 segundos. Se pide: a) Determinar el perímetro, el espaciado entre portadores y cantidad total de contenedores del carrusel (problema de dimensionado). b) Determinar la tasa horaria de transacciones del sistema de almacenamiento (problema de tasa de operación). Los datos del problema son los siguientes: •L=12 m •W=0,5m •nc=75 estantes espaciados equidistantemente •nb=6contenedores por estante •vc=20 m/min •Tpd =20 s •U=100 % por defecto •p=1carrusel Resolviendo de manera tradicional, se obtiene: •El perímetro C: C=2(L−W)+πW=25,14 m(4.1) •El espaciado entre estantes sc: sc =C nc =0,3352 m(4.2) •Número total de contenedores n: n=nbnc=450 contenedores (4.3) •El tiempo de ciclo: Tc=C 4vc +Tpd =0,6476 min (4.4) •Las transacciones por hora: Rt=60U Tc =92,65trans/h(4.5) 4.1 Carrusel 69 Por otro lado, resolviendo con Storage Calculator: Figura 4.1 Solución del problema de carrusel de Storage Calculator. Todos los valores resultan iguales. Cabe destacar que se ha tenido en cuenta 4 cifras significativas a la hora de realizar el problema a mano, ya que son las que considera MATLAB. [1] 70 Capítulo 4. Resultados. Ejemplos de aplicación 4.2 AS/RS 4.2.1 Problema 2 Se propone en este problema comparar las tablas de tiempos de ciclo simple y doble que aparecen en el artículo de Bozer y White con los valores que arroja la aplicación Storage Calculator. Para ello, se plasmarán estos en tablas en las que se diferenciarán dos posibles alternativas de configuración y entre ciclo doble y simple. En las dos primeras, se disponen varias combinaciones de columnas y filas con las que se obtienen aproximadamente 400 compartimentos de almacenaje. En la segunda alternativa, se sigue el mismo procedimiento pero con 100 compartimentos. El objetivo del análisis de estas configuraciones radica en comparar los valores de tiempo de ciclo obtenidos con el valor del modelo discreto. Concretamente, se estudia un AS/RS con estantes cuadrados de 4x4ft2 y que cuenta con una máquina S/R que viaja a 400 ft/min y 100 ft/min en las direcciones horizontal y vertical, respectivamente. De esta forma, al organizar dichos estantes en distintas configuraciones de filas y columnas se obtienen factores de forma diferentes mientras que se mantiene el número de compartimentos aproximadamente igual. Las tablas 4.1, 4.2 y 4.3 tienen la misma estructura. En las dos primeras se muestran 8 combinaciones de filas y columnas para la alternativa 1. La procedencia de los valores se indica según si son del artículo de Bozer y White o si se han obtenido con Storage Calculator (SC en la tabla). En la tabla 4.1 se muestran los valores de tiempo de desplazamiento, esto es, sin considerar el tiempo de pick-and-deposit, para los ciclos simples de las combinaciones de la alternativa 1. Se puede observar que los valores obtenidos mediante Storage Calculator son aproximadamente iguales a los del artículo, debiéndose las pequeñas diferencias en los casos donde las hay a la aproximación de las cifras decimales. Por otro lado, se puede apreciar que el modelo continuo muestra una aproximación satisfactoria, considerando que el porcentaje máximo de desviación se sitúa en 0.0625 % . Además, se observa que la aproximación del modelo continuo mejora a medida que el estante se aleja de ser cuadrado en tiempo. La misma observación se puede realizar para los tiempos de desplazamiento de ciclo simple obtenidos con el modelo MHI. De hecho, los resultados el método MHI mejoran significativamente al tender a cero el factor de forma. Esto se puede atribuir al hecho de que, al convertirse el almacén discreto en más rectangular, el número total de compartimentos asociadas a un tiempo de desplazamiento específico se acerca a uno. Por lo tanto, el tiempo esperado de desplazamiento de ciclo simple se acerca al valor obtenido utilizando el punto medio del almacén como punto de almacenamiento/recuperación. Se puede observar que el modelo MHI subestima el tiempo de desplazamiento de ciclo simple, especialmente para aquellas configuraciones con grandes factores de forma. La desviación máxima obtenida es de 25 %, casi 100 veces la máxima desviación del modelo continuo. La tabla 4.2 recoge los valores de tiempo de desplazamiento para los ciclos dobles de las combinaciones de la alternativa 1. En este caso, se encuentran algunas diferencias más significativas en los cálculos, que además de deberse a la aproximación de las cifras decimales, pueden deberse a errores en el artículo. Cabe destacar que en el artículo no se concreta cómo se ha empleado el método MHI para estos cálculos. 4.2 AS/RS 71 Tabla 4.1 Comparación de tiempos de desplazamiento de ciclo simple con la alternativa 1. Comparación de tiempos de desplazamiento - Alternativa 1 Ciclo simple Filas 10 9 8 7 Columnas 40 45 50 57 Aperturas 400 405 400 399 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 1.0000 1.0000 0.8000 0.8000 0.6400 0.6400 0.4912 0.4912 Estante discreto 0.5330 0.5457 0.5680 0.6156 Modelo continuo (% desviación) 0.5333 0.0625 0.5333 0.0625 0.5460 0.0543 0.5460 0.0550 0.5683 0.0469 0.5683 0.0469 0.6158 0.0380 0.6158 0.0325 Modelo MHI (% desviación) 0.4000 25.000 0.4000 24.950 0.4600 15.700 0.4600 15.700 0.5000 11.970 0.5000 11.970 0.5800 5.780 0.5800 5.780 Filas 6 5 4 3 Columnas 67 80 100 133 Aperturas 402 400 400 399 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 0.3582 0.3582 0.2500 0.2500 0.1600 0.1600 0.0902 0.0902 Estante discreto 0.6985 0.8165 1.0084 1.3335 Modelo continuo (% desviación) 0.6987 0.0285 0.6987 0.0286 0.8167 0.0204 0.8167 0.0245 1.0085 0.0132 1.0090 0.099 1.3336 0.0075 1.3340 0.0075 Modelo MHI (% desviación) 0.6800 2.650 0.6800 2.650 0.8000 2.020 0.8000 2.020 1.0000 0.830 1.0000 0.830 1.3400 0.490 1.3400 0.490 Por otro lado, como antes, el modelo continuo actúa de forma satisfactoria con un porcentaje de desviación máximo de 0.2069 % con respecto al modelo discreto. Basado en los resultados de la tabla 4.2, el modelo continuo parece que actúa mejor con un factor de forma b=0.35 . Este fenómeno se puede explicar analizando, en primer lugar, la expresión E(DC) = E(SC)+E(T B) . En la tabla 4.1, los valores de E(SC) están sobreestimados. Utilizando E(DC) de la 4.2 y E(SC) de la 4.1, se pueden obtener los valores para E(TB) . Haciendo esto, se puede observar que E(TB) se sobreestima para b=1 y se subestima para b=0 . Por lo tanto, para ciertos valores de b , la sobreestimación de E(SC) se compensa con la subestimación de E(TB) , dando lugar a un valor de E(DC)preciso. Se pueden realizar observaciones similares para el caso de los resultados obtenidos del modelo MHI en la 4.2. Sin embargo, el mejor valor para el modelo de MHI parece ser b=0.64 . La diferencia se debe al hecho de que la aproximación MHI implica una forma diferente de calcular E(TB) . Cabe recalcar que el porcentaje máximo de desviación observado para el método MHI es de 16.62 % , casi 80 veces la desviación máxima del modelo continuo. Los mismos argumentos anteriores se ven reflejados en los resultados obtenidos para la alternativa 2 en la tabla 4.3, que se ha añadido para ver como para los valores de factor de forma mencionados anteriormente, los tiempos de ciclo simple y doble verifican las mismas propiedades. Finalmente, en base a las tablas 4.1, 4.2 y 4.3, se puede observar que la aproximación del modelo continuo mejora conforme aumenta el número de aperturas. Tal resultado es intuitivo, ya que el modelo continuo ignora las discretizaciones del almacén. El impacto de hacer algo así disminuye 72 Capítulo 4. Resultados. Ejemplos de aplicación al aumentar el número de aperturas asociadas a un factor de forma dado. Además, se demuestra el un almacén cuadrado en tiempo, esto es, con factor de forma b=1 , minimiza el tiempo de desplazamiento, hecho que se puede deducir también de las expresiones de Bozer-White. Tabla 4.2 Comparación de tiempos de desplazamiento de ciclo doble con la alternativa 1. Comparación de tiempos de desplazamiento - Alternativa 1 Ciclo doble Filas 10 9 8 7 Columnas 40 45 50 57 Aperturas 400 405 400 399 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 1.0000 1.0000 0.8000 0.8000 0.6400 0.6400 0.4912 0.4912 Estante discreto 0.7196 0.7360 0.7644 0.8264 Modelo continuo (% desviación) 0.7200 0.0511 0.7200 0.0556 0.7363 0.0430 0.7363 0.0027 0.7647 0.0325 0.7647 0.0389 0.8265 0.0177 0.8265 0.0121 Modelo MHI (% desviación) 0.6000 16.620 0.6000 16.620 0.6800 7.6100 0.6800 7.6500 0.7600 0.5800 0.7600 0.5800 0.8600 4.0700 0.8600 4.0700 Filas 6 5 4 3 Columnas 67 80 100 133 Aperturas 402 400 400 399 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 0.3582 0.3582 0.2500 0.2500 0.1600 0.1600 0.0902 0.0902 Estante discreto 0.9353 1.0914 1.3464 1.7795 Modelo continuo (% desviación) 0.9353 0.0000 0.9353 0.0000 1.0912 0.0162 1.0910 0.0092 1.3460 0.0318 1.3460 0.0297 1.7787 0.0449 1.7790 0.0450 Modelo MHI (% desviación) 1.0200 9.0600 1.0000 6.9200 1.2000 9.9500 1.2000 9.9500 1.5000 11.410 1.5000 11.410 2.0000 12.390 2.0000 12.390 4.2 AS/RS 73 Tabla 4.3 Comparación de tiempos de desplazamiento de ciclo simple y doble con la alternativa 2. Comparación de tiempos de desplazamiento - Alternativa 2 Ciclo simple Filas 5 4 3 2 Columnas 20 25 33 50 Aperturas 100 100 99 100 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 1.0000 1.0000 0.6400 0.6400 0.3636 0.3636 0.1600 0.1600 Estante discreto 0.2660 0.2836 0.3441 0.5040 Modelo continuo (% desviación) 0.2667 0.2506 0.2667 0.2506 0.2841 0.1881 0.2841 0.1881 0.3445 0.1174 0.3445 0.1162 0.5043 0.0529 0.5043 0.0595 Modelo MHI (% desviación) 0.2400 9.7700 0.2000 24.810 0.2600 8.3200 0.2600 8.3200 0.3400 1.1900 0.3400 1.1900 0.500 0.7900 0.5000 0.7900 Ciclo doble Filas 5 4 3 2 Columnas 20 25 33 50 Aperturas 100 100 99 100 Procedencia Artículo SC Artículo SC Artículo SC Artículo SC Factor de forma 1.0000 1.0000 0.6400 0.6400 0.3636 0.3636 0.1600 0.1600 Estante discreto 0.3593 0.3818 0.4613 0.6739 Modelo continuo (% desviación) 0.3600 0.2069 0.3600 0.1948 0.3823 0.1315 0.3823 0.1437 0.4613 0.0000 0.4613 0.0000 0.6730 0.1277 0.673 0.1336 Modelo MHI (% desviación) 0.3200 10.940 0.3000 16.500 0.3800 0.4700 0.3800 0.4700 0.5000 8,3900 0.5000 8.3900 0.7600 12.780 0.7600 12.780 [2] 74 Capítulo 4. Resultados. Ejemplos de aplicación 4.2.2 Problema 3 Problema 3. Un sistema de almacenamiento/recuperación automatizado compuesto por 6 pasillos se ha integrado en una instalación de un gran almacén. Cada uno de estos pasillos cuenta con una longitud de 100 m y una altura de 20 m. La máquina S/R de cada pasillo viaja a una velocidad horizontal de 3 m/s y una velocidad vertical de 0.6 m/s. El tiempo de pick-and-deposit es de 15 s. Se considera que el número de ciclos simples por hora es igual al número de ciclos dobles por hora y que el sistema opera al 90 % de utilización. Se pide: a) Determinar los tiempos de ciclo simple y doble del almacén. b) Determinar el número de ciclos simples y dobles por hora y las transacciones por hora de un pasillo y el almacén completo. Los datos son los siguientes: •L=100 m •H=20 m •vy=180 m/min •vz=36 m/min •Tpd =15 s •U=90 % •Rcd/Rcs =1 •p=6pasillos Empleando el método MHI, los resultados que se obtienen son: •Las coordenadas de los puntos de referencia: Xcs =L 2=50 m Ycs =H 2=10 m Xcd =3L 4=75 m Ycd =3H 4=15 m •Los tiempos de ciclo simple y doble: Tcs =2MaxXcs vy Ycs vz+2Tpd =1.056 min (4.6) Tcd =2MaxXcd vy Ycd vz+4Tpd =1.833 min (4.7) •El número de ciclos simples, teniendo en cuenta que Rcd/Rcs =1: Rcs =60U Tcs +Tcd =18.69 ciclos/h(4.8) •Entonces, el número de ciclos doble: Rcd =Rcs =18.69 ciclos/h(4.9) •Las transacciones totales por pasillo, entonces, son: Rt=Rcs +2Rcd =3Rcs =56.08trans/h(4.10) 4.2 AS/RS 75 •Con este valor de Rt, sabiendo que el almacén cuenta con p=6pasillos, se obtiene: Rt p =Rtp=336.5trans/h(4.11) Al resolver con el método MHI de Storage Calculator, las soluciones son idénticas (figura 4.2). Por otro lado, se compara con el resultado que se obtiene con el método de Bozer-White (figura 4.3). Los resultados de tiempo son mayores para este segundo método, repercutiendo en una disminución del valor de las transacciones. [1] Figura 4.2 Solución del problema de almacenamiento aleatorio con MHI de AS/RS de Storage Calculator. Figura 4.3 Comparación entre las soluciones del problema de almacenamiento aleatorio con MHI y Bozer-White de AS/RS de Storage Calculator. 82 Capítulo 4. Resultados. Ejemplos de aplicación 4.2.5 Problema 6 Problema 6. Realizar el problema anterior dividiendo la altura del almacén en 2 clases iguales, en vez de la longitud. Se exponen a continuación los resultados de Storage Calculator, una vez visto que estos coinciden con los realizados a mano. Figura 4.8 Solución del problema de almacenamiento dedicado en configuración vertical con porcentajes de transacciones como datos de entrada con MHI de AS/RS de Storage Calculator. Figura 4.9 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración vertical con porcentajes de transacciones como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator. 4.2 AS/RS 83 4.2.6 Problema 7 Problema 7. Realizar el problema 5 considerando porcentajes de tiempo de utilización por clases en vez de porcentajes de transacciones por clases como dato de entrada. Los valores serán U1=75 % y U2=25 %. Se distribuyen las clases según la configuración horizontal. Figura 4.10 Solución del problema de almacenamiento dedicado en configuración horizontal con porcentajes de tiempos de utilización como datos de entrada con MHI de AS/RS de Storage Calculator. Figura 4.11 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración horizontal con porcentajes de tiempo de utilización como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator. 84 Capítulo 4. Resultados. Ejemplos de aplicación 4.2.7 Problema 8 Problema 8. Realizar el problema anterior pero considerando la configuración vertical. Figura 4.12 Solución del problema de almacenamiento dedicado en configuración vertical con porcentajes de tiempo de utilización como datos de entrada con MHI de AS/RS de Storage Calculator. Figura 4.13 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración vertical con porcentajes de tiempo de utilización como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator. De manera general, se observa en los problemas del 3 al 8 lo que se indicó en el problema 2 : el método MHI subestima los tiempos de ciclo simple, de forma que las transacciones están sobreestimadas. Por tanto, el método de Bozer y White se puede considerar más preciso. 4.2 AS/RS 85 Por otro lado, al comparar los resultados entre el cálculo simplificado y el cálculo exacto de Bozer y White, se puede considerar que el primero de ellos sobreestima los tiempos por las simplificaciones realizadas en su desarrollo, dando lugar a un menor número de transacciones. La diferencia entre los dos procedimientos es del orden de la unidad, siendo el cálculo simplificado una forma de obtener los valores aproximados de forma más rápida y sencilla en los casos en los que conocer el orden de magnitud y no el valor exacto sea de utilidad. Además, como se expuso en la teoría, conocer los valores obtenidos mediante el cálculo simplificado es útil para tener en consideración una cota superior que indique que los resultados del cálculo exacto son correctos. Por último, dada la relación entre los cocientes de las dimensiones y velocidades horizontales y verticales, respectivamente, los resultados del método MHI ponen de manifiesto lo que se expuso en la parte teórica de esta memoria: para L/vy>H/vz , entre dividir horizontal o verticalmente el almacén, la solución óptima es la primera. Las transacciones totales son mayores para los problemas 5 y 7 , donde se ha considerado tal configuración. Para el caso de Bozer y White, ocurre algo similar. Al elegir la configuración óptima siguiendo el mismo criterio anterior, se obtiene que algunos tiempos mejoran y otros empeoran, pero la conclusión global de valores indica que la configuración es beneficiosa, repercutiendo en un incremento de las transacciones. 5 Conclusiones y líneas futuras de trabajo Storage Calculator es una aplicación generada en el entorno App Designer de MATLAB que ofrece las facilidades de cálculo y ahorro de tiempo de la programación, a la vez que conserva la esencia teórica gracias a las detalladas ayudas que se pueden encontrar en la mayoría de las ventanas. Además, cuenta con la ventaja de ser accesible para toda la comunidad universitaria a la que pudiera ser útil gracias a las licencias gratuitas de MATLAB de la Universidad de Sevilla, siendo también este el lenguaje familiar, ya que forma parte del temario de varias asignaturas. En Storage Calculator se encuentran implementados métodos de cálculo de tiempos de ciclo y transacciones para almacenes automatizados de dos tipos: carruseles y AS/RS. Para el segundo de los casos, se han analizado dos métodos: MHI y Bozer-White, extraídos de la literatura y que resultan de utilidad para comparar los resultados obtenidos en función de las hipótesis propias de cada uno de ellos. De estos métodos, cabe destacar que el de Bozer y White permite obtener unos resultados más precisos que los de que arroja MHI para almacenamiento aleatorio, ya que este último subestima los tiempos de ciclo y, por tanto, sobreestima las transacciones por hora del almacén. Para almacenamiento dedicado basado en clases, al ser los procedimientos empleados extensiones de los de aleatorio, se repite el mismo suceso. Estas conclusiones se ven reflejadas en los problemas resueltos del capítulo anterior. Por otro lado, el conjunto final de archivos que conforman Storage Calculator asciende a unos sesenta, contando entre ellos ventanas de diálogo, que hacen más sencilla y directa la interacción entre el usuario y la aplicación; ventanas de cálculo, que proporcionan todos los resultados de interés para resolver los problemas propuestos en la literatura; y ventanas de ayuda, que recogen la teoría en relación a los carruseles y AS/RS detallando los datos, los resultados, el análisis con las expresiones y la configuración de cada uno de los métodos. De manera experimental, se ha demostrado que los valores obtenidos a mano y en la literatura y mediante la aplicación convergen, situando este hecho a Storage Calculator como una herramienta informática muy útil para el análisis de almacenes automatizados, con el ahorro de tiempo que esto implicaría, previniendo errores típicos asociados a las operaciones a mano, pero sin perder las nociones teóricas imprescindibles gracias a los aportes incluídos de esta en el desarrollo de la 87 88 Capítulo 5. Conclusiones y líneas futuras de trabajo aplicación. Para finalizar este escrito, se proponen como ideas para trabajos futuros añadir más clases en el estudio de los almacenes, implementar más métodos existentes en Storage Calculator, incluir vídeos de tutoriales para los usuarios y extender el uso de las aplicaciones a otros tipos de problemas relacionados con la manipulación de materia dentro de las fábricas, como podría ser el transporte. En la línea de la implementación de más métodos existentes, se considera interesante el método de Eynan-Rosenblatt. Los autores exponen en el artículo [ 4 ] un procedimiento en el que, para la estrategia de almacenamiento dedicado basado en clases, se obtiene un único tiempo de ciclo simple que caracteriza el almacén completo. La configuración del almacén una vez dividido en clases es diferente a las de los métodos MHI y de Bozer y White, ya que, en vez de secciones iguales, combina diferentes geometrías para obtener unos mejores resultados. En primer lugar, se normaliza el almacén de la misma forma que se hace en el método de Bozer y White, sin embargo, las dimensiones finales se adecúan para que el área resultante sea igual a la unidad (figura 5.1), esto es, tendrá una altura igual a √by una longitud 1/√b. Figura 5.1 Dimensiones del almacén normalizado con el método de Eynan-Rosenblatt. Eynan y Rosenblatt proponen la división de tal almacén en 3 tipos de regiones: cuadradas, rectangulares y de transición (figura 5.2). Los límites de estas regiones se definen en función de la demanda de los elementos que se almacenen en cada clase. Se proponen divisiones similares también [5] y [6]. Figura 5.2 Potenciales divisiones según el método de Eynan-Rosenblatt. 89 Los tres tipos diferentes de regiones son: 1. Regiones cuadradas. Son aquellas con forma de ”L” (regiones 1 y 2 en la figura 5.2), comunmente encontradas en almacenes cuadrados. Los límites de estas regiones son Ri⩽√b y estas forman (junto a las regiones previas) áreas cuadradas en tiempo de dimensiones Rix Ri . 2. Regiones rectangulares. Son aquellas regiones en las que Ri≥√b (regiones 4 y 5 de la figura 5.2). Estas regiones, junto a las anteriores, forman un área rectangular en el tiempo de dimensiones Rix√b. 3. Regiones de transición. Se trata de una región de transición (región 3 de la figura 5.2), como su propio nombre indica, entre las regiones cuadradas y rectangulares. Para esta región de transición, se cumple lo siguiente: Ri−1<√b y Ri>√b . Esta región, junto a las anteriores, forman un área rectangular en tiempo con dimensiones Rix√b . Nótese que se puede dar el caso de que estas regiones no existan cuando los límites de la última región cuadrada alcanzan exactamente √b. Los contornos que delimitan las regiones mostradas en la figura 5.2 son rectas de tiempo de viaje constante. Esto implica que los productos almacenados en una región tengan tiempos de viaje menores que los productos almacenados en las regiones situadas a su derecha y tiempos de viaje mayores que los productos almacenados en las regiones situadas a su izquierda. En general, las divisiones de los almacenes que se han considerado en este trabajo no coinciden con este tipo de contornos, lo que puede dar lugar a que productos con mayor actividad requieran un mayor tiempo de viaje que productos con menor actividad. Esta situación podría darse, por ejemplo, en un almacén como el de la figura 5.3 en relación con los productos almacenados en los puntos A (de mayor actividad) y B (de menor actividad). [4] Figura 5.3 Divisiones realizadas en los métodos MHI y de Bozer y White. Apéndice A Storage Calculator: Arranque de la aplicación Los pasos a seguir para comenzar a utilizar Storage Calculator son los siguientes: 1. Descargar y descomprimir la carpeta StorageCalculator.zip. Es muy importante no sacar ningún archivo de la carpeta una vez descomprimida, pues se pueden romper los enlaces internos de las ventanas. 2. Abrir MATLAB. 3. En la parte superior izquierda de la pantalla principal, buscar la pestaña APPS. Figura A.1 Página principal de MATLAB. 4. Seleccionar la opción Design App en el menú de opciones. Figura A.2 Pestaña APPS de MATLAB. 91 98 Appendix B. Storage Calculator: Códigos base function startupFcn(app, nclases) end % Button pushed function: AtrsButton function AtrsButtonPushed(app, event) delete(app) end % Button pushed function: CalcularButton function CalcularButtonPushed(app, event) app.TcsminEditField.Value=2*max(0.5*app.LmEditField.Value/app. vymminEditField.Value... ,0.5*app.HmEditField.Value/app.vzmminEditField.Value)... +2*app.TpdsEditField.Value/60; app.TcdminEditField.Value=2*max(0.75*app.LmEditField.Value/ app.vymminEditField.Value... ,0.75*app.HmEditField.Value/app.vzmminEditField.Value)... +4*app.TpdsEditField.Value/60; end % Button pushed function: CalcularButton_2 function CalcularButton_2Pushed(app, event) app.RcstranshEditField.Value=60/100*app.UEditField.Value/... (app.TcsminEditField.Value+app.RcdRcsEditField.Value*app. TcdminEditField.Value); app.RcdtranshEditField.Value=app.RcstranshEditField.Value*app. RcdRcsEditField.Value; app.RttranshEditField.Value=app.RcstranshEditField.Value+2* app.RcdtranshEditField.Value; app.RtptranshEditField.Value=app.RttranshEditField.Value*app. pEditField.Value; end % Button pushed function: AyudaButton function AyudaButtonPushed(app, event) ayuda4 end Código B.4 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método MHI para el problema de tiempo de utilización por clases. % Callbacks that handle component events methods (Access = private) % Button pushed function: AtrsButton function AtrsButtonPushed(app, event) delete(app) 99 end % Button pushed function: CalcularTiemposButton function CalcularTiemposButtonPushed(app, event) n=2; Tcsi=zeros(1,n); Tcdi=zeros(1,n); for i=1:n if app.LennclasesigualesButton.Value==1 Li=app.LmEditField.Value/n; Xcsi=Li*(i-1/2); Ycsi=app.HmEditField.Value/2; Xcdi=Li*(i-1/4); Ycdi=3/4*app.HmEditField.Value; elseif app.HennclasesigualesButton.Value==1 Hi=app.HmEditField.Value/n; Xcsi=app.LmEditField.Value/2; Ycsi=Hi*(i-1/2); Xcdi=app.LmEditField.Value*3/4; Ycdi=Hi*(i-1/4); elseif app.ptimoButton.Value==1 if app.LmEditField.Value/app.vymminEditField.Value<... app.HmEditField.Value/app.vzmminEditField. Value % Se divide H en n partes iguales Hi=app.HmEditField.Value/n; Xcsi=app.LmEditField.Value/2; Ycsi=Hi*(i-1/2); Xcdi=app.LmEditField.Value*3/4; Ycdi=Hi*(i-1/4); else % Se divide L en n partes iguales Li=app.LmEditField.Value/n; Xcsi=Li*(i-1/2); Ycsi=app.HmEditField.Value/2; Xcdi=Li*(i-1/4); Ycdi=3/4*app.HmEditField.Value; end end Tcsi(i)=2*max(Xcsi/app.vymminEditField.Value,Ycsi/app. vzmminEditField.Value)... +2*app.TpdsEditField.Value/60; Tcdi(i)=2*max(Xcdi/app.vymminEditField.Value,Ycdi/app. vzmminEditField.Value)... +4*app.TpdsEditField.Value/60; end app.Tcs_1minEditField.Value=Tcsi(1); app.Tcs_2minEditField.Value=Tcsi(2); app.Tcd_1minEditField.Value=Tcdi(1); app.Tcd_2minEditField.Value=Tcdi(2); end 100 Appendix B. Storage Calculator: Códigos base % Selection changed function: DIVIDIRButtonGroup function DIVIDIRButtonGroupSelectionChanged(app, event) end % Button pushed function: CalcularTransaccionesButton function CalcularTransaccionesButtonPushed(app, event) pcl=[app.U_1EditField.Value,app.U_2EditField.Value]/100; r=[app.RcdRcs_1EditField.Value,app.RcdRcs_2EditField.Value]; Tcsi=[app.Tcs_1minEditField.Value,app.Tcs_2minEditField.Value ]; Tcdi=[app.Tcd_1minEditField.Value,app.Tcd_2minEditField.Value ]; n=2; for i=1:n Rti(i)=60*app.UEditField.Value/100*pcl(i)*(1+2*r(i))... /(Tcsi(i)+r(i)*Tcdi(i)); end app.Rt_1transhEditField.Value=Rti(1); app.Rt_2transhEditField.Value=Rti(2); app.RttranshEditField.Value=sum(Rti); app.RtptranshEditField.Value=app.RttranshEditField.Value*... app.pEditField.Value; end % Button pushed function: AyudaButton function AyudaButtonPushed(app, event) ayuda9 end Código B.5 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método MHI para el problema de transacciones por clases. % Callbacks that handle component events methods (Access = private) % Button pushed function: AtrsButton function AtrsButtonPushed(app, event) delete(app) end % Button pushed function: CalcularTiemposButton function CalcularTiemposButtonPushed(app, event) n=2; Tcsi=zeros(1,n); Tcdi=zeros(1,n); for i=1:n if app.LennclasesigualesButton.Value==1 101 Li=app.LmEditField.Value/n; Xcsi=Li*(i-1/2); Ycsi=app.HmEditField.Value/2; Xcdi=Li*(i-1/4); Ycdi=3/4*app.HmEditField.Value; elseif app.HennclasesigualesButton.Value==1 Hi=app.HmEditField.Value/n; Xcsi=app.LmEditField.Value/2; Ycsi=Hi*(i-1/2); Xcdi=app.LmEditField.Value*3/4; Ycdi=Hi*(i-1/4); elseif app.ptimoButton.Value==1 if app.LmEditField.Value/app.vymminEditField.Value<... app.HmEditField.Value/app.vzmminEditField. Value % Se divide H en n partes iguales Hi=app.HmEditField.Value/n; Xcsi=app.LmEditField.Value/2; Ycsi=Hi*(i-1/2); Xcdi=app.LmEditField.Value*3/4; Ycdi=Hi*(i-1/4); else % Se divide L en n partes iguales Li=app.LmEditField.Value/n; Xcsi=Li*(i-1/2); Ycsi=app.HmEditField.Value/2; Xcdi=Li*(i-1/4); Ycdi=3/4*app.HmEditField.Value; end end Tcsi(i)=2*max(Xcsi/app.vymminEditField.Value,Ycsi/app. vzmminEditField.Value)... +2*app.TpdsEditField.Value/60; Tcdi(i)=2*max(Xcdi/app.vymminEditField.Value,Ycdi/app. vzmminEditField.Value)... +4*app.TpdsEditField.Value/60; end app.Tcs_1minEditField.Value=Tcsi(1); app.Tcs_2minEditField.Value=Tcsi(2); app.Tcd_1minEditField.Value=Tcdi(1); app.Tcd_2minEditField.Value=Tcdi(2); end % Selection changed function: DIVIDIRButtonGroup function DIVIDIRButtonGroupSelectionChanged(app, event) end % Button pushed function: CalcularTransaccionesButton function CalcularTransaccionesButtonPushed(app, event) 102 Appendix B. Storage Calculator: Códigos base pcl=[app.Rt_1EditField.Value,app.Rt_2EditField.Value]/100; r=[app.RcdRcs_1EditField.Value,app.RcdRcs_2EditField.Value]; Tcsi=[app.Tcs_1minEditField.Value,app.Tcs_2minEditField.Value ]; Tcdi=[app.Tcd_1minEditField.Value,app.Tcd_2minEditField.Value ]; n=2; for i=1:n den(i)=pcl(i)/(1+2*r(i))*(Tcsi(i)+r(i)*Tcdi(i)); end Rt=60*app.UEditField.Value/100/sum(den); Rti=[Rt*pcl(1),Rt*pcl(2)]; app.Rt_1transhEditField.Value=Rti(1); app.Rt_2transhEditField.Value=Rti(2); app.RttranshEditField.Value=Rt; app.RtptranshEditField.Value=app.RttranshEditField.Value*... app.pEditField.Value; end % Button pushed function: AyudaButton function AyudaButtonPushed(app, event) ayuda8 end A continuación, se muestran los archivos análogos a los anteriores para el método de Bozer-White. En primer lugar, en el cógido B.6 se recogen los comandos básicos en un script de MATLAB para el caso de almacenamiento aleatorio. Código B.6 BozerWhite.m. % Método 1 - Bozer-White - Almacenamiento aleatorio T_SC=zeros(1,n); T_DC=zeros(1,n); L=348; H=88; vy=356; vz=100; Tpd=18; % Cálculos previos ty=L/vy; tz=H/vz; T=max(ty,tz); b=min(ty/T,tz/T); % Cálculos de tiempos E_sc=1/3*b^2+1; E_SC=E_sc*T; T_SC=E_SC+2*Tpd/60; E_tb=1/3+1/6*b^2-1/30*b^3; E_TB=E_tb*T; E_dc=E_sc+E_tb; E_DC=E_dc*T; T_DC=E_DC+4*Tpd/60; 103 Para los dos procedimientos de cálculo empleados en Bozer y White, el cálculo simplificado y el exacto, se generaron dos scripts más. El código B.7 presenta los comandos necesarios para el cálculo de los tiempos de ciclo simple y doble del método utilizando la estrategia 1, mientras que el código B.8 muestra los correspondientes a la estrategia 2. Dado que el cálculo de transacciones tanto para porcentajes de transacciones por clase como para porcentajes de tiempo de utilización por clase son los mismos que en MHI, se han omitido por claridad. Código B.7 BWestrategia1.m. % ESTRATEGIA 1 - Cálculos de tiempos L=373.33; H=58; n=2; vy=350; vz=60; Tpd=21; % Vectores creados Tsc=[]; Tdc=[]; % Dar valor 0 para división horizontal, 1 para división vertical % % ÓPTIMO % if L/vy>H/vz % idiv=1; % else % idiv=0; % end idiv=1; if idiv==0 % DIVISIÓN HORIZONTAL % Para cada clase: tyi=L/n/vy; tzi=H/vz; Ti=max(tyi,tzi); bi=min(tyi/Ti,tzi/Ti); fac=L/n; v=vy; elseif idiv==1 % DIVISIÓN VERTICAL % Para cada clase: tyi=L/vy; tzi=H/n/vz; Ti=max(tyi,tzi); bi=min(tyi/Ti,tzi/Ti); fac=H/n; v=vz; 104 Appendix B. Storage Calculator: Códigos base end for i=1:n Tsc(i)=2/v*(i-1)*fac+Ti*(1/3*bi^2+1)+2*Tpd/60; Tdc(i)=2/v*(i-1)*fac+Ti/30*(40+15*bi^2-bi^3)+4*Tpd/60; end Código B.8 BWestrategia2.m. % ESTRATEGIA 2 - Cálculos de tiempos L=373.33; H=58; n=5; vy=350; vz=60; Tpd=21; % Vectores creados E_SC=[]; E_DC=[]; Tsc=[]; Tdc=[]; % Dar valor 0 para división horizontal, 1 para división vertical % % ÓPTIMO % if L/vy>H/vz % idiv=1; % else % idiv=0; % end idiv=0; % Para la clase 1: if idiv==0 ty1=L/n/vy; tz1=H/vz; elseif idiv==1 ty1=L/vy; tz1=H/n/vz; end T1=max(ty1,tz1); b1=min(ty1/T1,tz1/T1); E_SC(1)=T1*(1/3*b1^2+1); Tsc(1)=E_SC(1)+2*Tpd/60; Ttb1=T1/30*(10+5*b1^2-b1^3); E_DC(1)=E_SC(1)+Ttb1; Tdc(1)=E_DC(1)+4*Tpd/60; 105 % Para cada clase, se realizan los cálculos para el almacén 1-i for i=2:n % Según configuración if idiv==0 L1i=i*L/n; H1i=H; elseif idiv==1 L1i=L; H1i=i*H/n; end % Almacén 1i ty1i=L1i/vy; tz1i=H1i/vz; T1i=max(ty1i,tz1i); b1i=min(ty1i/T1i,tz1i/T1i); Tsc1i=T1i*(1/3*b1i^2+1); % Almacén 1:i-1 im1 % Según configuración if idiv==0 Lim1=(i-1)*L/n; Him1=H; elseif idiv==1 Lim1=L; Him1=(i-1)*H/n; end tyim1=Lim1/vy; tzim1=Him1/vz; Tim1=max(tyim1,tzim1); bim1=min(tyim1/Tim1,tzim1/Tim1); Tscim1=Tim1*(1/3*bim1^2+1); E_SC(i)=i*Tsc1i-(i-1)*Tscim1; Tsc(i)=E_SC(i)+2*Tpd/60; E_DC(i)=E_SC(i)+Ttb1; Tdc(i)=E_DC(i)+4*Tpd/60; end A partir de los comandos de este script, se pudieron desarrollar los códigos de cálculo para el método de Bozer-White en Storage Calculator. El cógido B.9 recoge las instrucciones para almacenamiento aleatorio y el código B.10 las correspondientes a almacenamiento dedicado basado en n=2 clases. Ambos permiten obtener los tiempos de ciclo simple y doble para las distintas configuraciones para el posterior cálculo de las transacciones. Código B.9 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento aleatorio del método Bozer-White. % Callbacks that handle component events methods (Access = private) % Code that executes after component creation function startupFcn(app, nclases) 106 Appendix B. Storage Calculator: Códigos base end % Button pushed function: AtrsButton function AtrsButtonPushed(app, event) AAvsADBC_BW delete(app) end % Button pushed function: CalcularButton function CalcularButtonPushed(app, event) E_CS=1/3*app.bEditField.Value^2+1; app.TcsminEditField.Value=E_CS*app.TminEditField.Value+app. TpdsEditField.Value/60*2; E_TB=1/3+1/6*app.bEditField.Value^2-1/30*app.bEditField.Value ^3; E_DC=E_CS+E_TB; app.TcdminEditField.Value=E_DC*app.TminEditField.Value+app. TpdsEditField.Value/60*4; end % Button pushed function: CalcularButton_2 function CalcularButton_2Pushed(app, event) app.RcscicloshEditField.Value=60/100*app.UEditField.Value/... (app.TcsminEditField.Value+app.RcdRcsEditField.Value*app. TcdminEditField.Value); app.RcdcicloshEditField.Value=app.RcscicloshEditField.Value* app.RcdRcsEditField.Value; app.RttranshEditField.Value=app.RcscicloshEditField.Value+2* app.RcdcicloshEditField.Value; app.RtptranshEditField.Value=app.RttranshEditField.Value*app. pEditField.Value; end % Button pushed function: AyudaButton function AyudaButtonPushed(app, event) ayuda1_BW end % Button pushed function: CompararconMHIButton function CompararconMHIButtonPushed(app, event) % Cálculo de tiempos para Bozer-White ty=app.LmEditField.Value/app.vymminEditField.Value; tz=app.HmEditField.Value/app.vzmminEditField.Value; T_BW=ty; b_BW=tz/T_BW; Tcs_BW=(1/3*b_BW^2+1)*T_BW+2*app.TpdsEditField.Value/60; E_TB=1/3+1/6*b_BW^2-1/30*b_BW^3; Tcd_BW=Tcs_BW+E_TB*T_BW+2*app.TpdsEditField.Value/60; % Cálculo de transacciones para Bozer-White 107 Rcs_BW=60/100*app.UEditField.Value/... (Tcs_BW+app.RcdRcsEditField.Value*Tcd_BW); Rcd_BW=Rcs_BW*app.RcdRcsEditField.Value; Rt_BW=app.RcscicloshEditField.Value+2*app.RcdcicloshEditField. Value; % Cálculo para MHI Tcs_MHI=2*max(0.5*app.LmEditField.Value/app.vymminEditField. Value... ,0.5*app.HmEditField.Value/app.vzmminEditField.Value)... +2*app.TpdsEditField.Value/60; Tcd_MHI=2*max(0.75*app.LmEditField.Value/app.vymminEditField. Value... ,0.75*app.HmEditField.Value/app.vzmminEditField.Value)... +4*app.TpdsEditField.Value/60; Rcs_MHI=60/100*app.UEditField.Value/... (Tcs_MHI+app.RcdRcsEditField.Value*Tcd_MHI); Rcd_MHI=Rcs_MHI*app.RcdRcsEditField.Value; Rt_MHI=Rcs_MHI+2*Rcd_MHI; comp1(Tcs_MHI, Tcd_MHI, Rt_MHI, Tcs_BW, Tcd_BW, Rt_BW) end % Button pushed function: CalcularButton_3 function CalcularButton_3Pushed(app, event) ty=app.LmEditField.Value/app.vymminEditField.Value; tz=app.HmEditField.Value/app.vzmminEditField.Value; app.TminEditField.Value=max(ty,tz); app.bEditField.Value=min(tz/app.TminEditField.Value,ty/app. TminEditField.Value); end end Código B.10 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método Bozer-White con cálculo simplificado (estrategia 1) y cálculo exacto (estrategia 2). % Callbacks that handle component events methods (Access = private) % Button pushed function: AtrsButton function AtrsButtonPushed(app, event) delete(app) end % Button pushed function: CalcularButton function CalcularButtonPushed(app, event) 114 Índice de Figuras 3.15 Ventana de selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator 38 3.16 Ventana de ayuda para la selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator 39 3.17 Ventana error en la selección de número de clases iguales y datos de entrada de AS/RS de Storage Calculator 39 3.18 Ventana de cálculo para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 40 3.19 Ventana de cálculo para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator 40 3.20 Ventana de ayuda (las dos primeras pestañas) para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 41 3.21 Ventana de ayuda (las dos últimas pestañas) para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 42 3.22 Ventana de ayuda (pestaña de análisis) para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. Las tres pestañas que no se muestran son idénticas a las de la ayuda correspondiente al caso de porcentaje de transacciones por clase 43 3.23 Ventana de comparación entre métodos y estrategias para n=2 de AS/RS de Storage Calculator 43 3.24 Ventana de cálculo para n=3 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 45 3.25 Ventana de cálculo para n=3 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 45 3.26 Ventana de comparación de métodos para n=3de AS/RS de Storage Calculator 46 3.27 Ventana de cálculo para n=4 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 47 3.28 Ventana de cálculo para n=4 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 47 3.29 Ventana de comparación de métodos para n=4de AS/RS de Storage Calculator 48 3.30 Ventana de cálculo para n=5 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 49 3.31 Ventana de cálculo para n=5 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 49 3.32 Ventana de comparación de métodos para n=5de AS/RS de Storage Calculator 50 3.33 Ventana de cálculo de almacenamiento aleatorio de AS/RS de Storage Calculator 52 3.34 Ventana de ayuda de almacenamiento aleatorio de AS/RS de Storage Calculator 53 3.35 Ventana de cálculo para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 56 3.36 Ventana de cálculo para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator 56 3.37 Ventana de ayuda para n=2 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator. Pestañas de datos y resultados y análisis. 57 3.38 Ventana de ayuda para n=2 con datos de entrada de porcentajes de tiempo de utilización por clase de AS/RS de Storage Calculator. Pestañas de datos y resultados y análisis. 58 3.39 Ventana de ayuda para n=2 de AS/RS de Storage Calculator. Pestañas de configuración horizontal y vertical para el cálculo simplificado. 59 3.40 Ventana de ayuda para n=2 de AS/RS de Storage Calculator. Pestañas de configuración horizontal y vertical para el cálculo exacto. 60 Índice de Figuras 115 3.41 Ventana de cálculo para n=3 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 62 3.42 Ventana de cálculo para n=3 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 62 3.43 Ventana de cálculo para n=4 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 63 3.44 Ventana de cálculo para n=4 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 63 3.45 Ventana de cálculo para n=5 con datos de entrada de porcentajes de transacciones por clase de AS/RS de Storage Calculator 64 3.46 Ventana de cálculo para n=5 con datos de entrada de porcentajes de utilización de tiempo por clase de AS/RS de Storage Calculator 64 4.1 Solución del problema de carrusel de Storage Calculator 69 4.2 Solución del problema de almacenamiento aleatorio con MHI de AS/RS de Storage Calculator 75 4.3 Comparación entre las soluciones del problema de almacenamiento aleatorio con MHI y Bozer-White de AS/RS de Storage Calculator 75 4.4 Solución del problema de almacenamiento aleatorio con Bozer-White de AS/RS de Storage Calculator 77 4.5 Comparación entre las soluciones del problema de almacenamiento aleatorio con MHI y Bozer-White de AS/RS de Storage Calculator 77 4.6 Solución del problema de almacenamiento dedicado en configuración horizontal con porcentajes de transacciones como datos de entrada con MHI de AS/RS de Storage Calculator 80 4.7 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración horizontal con porcentajes de transacciones como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator 81 4.8 Solución del problema de almacenamiento dedicado en configuración vertical con porcentajes de transacciones como datos de entrada con MHI de AS/RS de Storage Calculator 82 4.9 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración vertical con porcentajes de transacciones como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator 82 4.10 Solución del problema de almacenamiento dedicado en configuración horizontal con porcentajes de tiempos de utilización como datos de entrada con MHI de AS/RS de Storage Calculator 83 4.11 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración horizontal con porcentajes de tiempo de utilización como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator 83 4.12 Solución del problema de almacenamiento dedicado en configuración vertical con porcentajes de tiempo de utilización como datos de entrada con MHI de AS/RS de Storage Calculator 84 4.13 Comparación entre las soluciones del problema de almacenamiento dedicado en configuración vertical con porcentajes de tiempo de utilización como datos de entrada con MHI y Bozer-White de AS/RS de Storage Calculator 84 5.1 Dimensiones del almacén normalizado con el método de Eynan-Rosenblatt 88 5.2 Potenciales divisiones según el método de Eynan-Rosenblatt 88 5.3 Divisiones realizadas en los métodos MHI y de Bozer y White 89 A.1 Página principal de MATLAB 91 A.2 Pestaña APPS de MATLAB 91 A.3 Pantalla inicial del entorno App Designer de MATLAB. 92 116 Índice de Figuras A.4 Búsqueda del archivo de Storage Calculator. 92 A.5 Ejecutar Storage Calculator pulsando ”Run”. 92 A.6 Menú principal de Storage Calculator. 93 Índice de Tablas 3.1 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de transacciones por clase 33 3.2 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de tiempo de utilización por clase 33 3.3 Tabla de archivos de MHI de Storage Calculator 44 3.4 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de transacciones por clase 51 3.5 Archivos correspondientes a cada valor de n comprendido entre 1 y 5 para el botón de datos de entrada: porcentaje de tiempo de utilización por clase 51 3.6 Tabla de archivos de Bozer y White de Storage Calculator 61 4.1 Comparación de tiempos de desplazamiento de ciclo simple con la alternativa 1 71 4.2 Comparación de tiempos de desplazamiento de ciclo doble con la alternativa 1 72 4.3 Comparación de tiempos de desplazamiento de ciclo simple y doble con la alternativa 2 73 117 Índice de Códigos B.1 Código base de operaciones con carruseles 95 B.2 ASRS.m 96 B.3 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento aleatorio del método MHI 97 B.4 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método MHI para el problema de tiempo de utilización por clases 98 B.5 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método MHI para el problema de transacciones por clases 100 B.6 BozerWhite.m 102 B.7 BWestrategia1.m103 B.8 BWestrategia2.m104 B.9 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento aleatorio del método Bozer-White 105 B.10 Código base de operaciones con AS/RS empleando la estrategia de almacenamiento dedicado basado en 2 clases del método Bozer-White con cálculo simplificado (estrategia 1) y cálculo exacto (estrategia 2) 107 119 Bibliografía [1] Mikell P. Groover. Automation, Production Systems, and Computer-Integrated Manufacturing. Pearson, 4 edition, 2014. [2] Yavuz A. Bozer and John A. White. Travel-Time Models for Automated Storage/Retrieval Systems. IIE Transactions, 16(4):329–338, 1984. [3] Bozer Y.A. Tanchoco J.M.A. Tompkins J.A., White J.A. Facilities Planning. John Wiley Sons, Inc., 4 edition, 2010. [4] Amit Eynan and Meir J. Rosenblatt. Establishing Zones in Single-Command Class-Based Rectangular AS/RS. IIE Transactions, 26(1):38–46, 1994. [5] Schwarz L. B. Graves S. C., Hausman W. H. Storage-retrieval interleaving in automatic warehousing systems. Management Science, 23(9):935–945, 1977. [6] Graves S. C. Hausman W. H., Schwarz L. B. Optimal storage assignment in automatic warehousing systems. Management Science, 22(6):629–638, 1976. 121