Академический Документы
Профессиональный Документы
Культура Документы
simulación con
Isaías Simón Marmolejo
FlexSim expreso.
Un primer paso a la
simulación con FlexSim
Un primer paso a la
simulación con
FlexSim
Primera edición
Autor
Isaías Simón Marmolejo de nacionalidad mexicana, es maestro en ciencias en ingeniería
industrial por parte de la Universidad Autónoma del Estado de Hidalgo (UAEH) y a la
fecha estudia un doctorado en manufactura avanzada en el Centro de Tecnología
Avanzada, CIATEQ A.C. Tiene 5 años de experiencia como profesor investigador en la
Escuela Superior de Ciudad Sahagún de la UAEH, y desde el 2008 es profesor por
asignaturas en el Instituto Tecnológico Nacional de México Campus Pachuca con
docencia en las asignaturas de: investigación de operaciones, simulación de eventos
discretos, planeación y organización de la producción, y cadena de suministros.
FlexSim Iberia
Director del proyecto editorial: COPYRIGHT © 2016
Marcello Rosadini FlexSim Iberia
Todos los derechos reservados.
MITICO STUDIO S.L. (FlexSim Iberia)
N.I.F: B65987257 Impreso en España
CL Cartagena, 243 3-1 08025, Barcelona, Printed in Spain
ESPAÑA.
T. +34 932 20 20 45 ISBN: 978-84-617-5095-5
M. +34 607 01 40 22
m.rosadini@flexsim.com.es
http://iberia.flexsim.com.es/
Authorized by:
Bibliografía: Simón-Marmolejo, I. FlexSim Software Products, Inc.
(2016). Un primer paso a la simulación con
https://www.flexsim.com/
FlexSim (p. 189). España: FlexSim Iberia.
AVISO
Ninguna parte de esta publicación puede ser reproducida, almacenada en un sistema
de recuperación, o transmitida de ninguna forma, ni por ningún medio, sea éste
electrónico, mecánico, químico, electro-óptico, fotocopia, grabado o cualquier otro,
sin la previa autorización por escrito del Editor.
Los problemas legales aplicables a lo antes descrito, serán competentes a los
JUZGADOS y los TRIBUNALES de Barcelona (España). De conformidad con lo
dispuesto en el artículo 270 del Código Penal vigente, podrán ser castigados con penas
de multa y privación de la libertad.
En memoria de mis abuelitas Sofía Mendoza Ruíz y Esperanza Mota Porras
quienes me enseñaron el valor de la vida
Gracias Dios
Índice de contenido
PRÓLOGO .............................................................................................................. III
ii
Prólogo
Para poder comprender la realidad y complejidad que un sistema puede conllevar,
ha sido necesario construir artificialmente objetos y experimentar con ellos
dinámicamente antes de interactuar con el sistema real.
iii
Organización del libro
iv
En los modelos venideros se ilustra la manera de manipular material que se
encuentra en cantidades discretas (cajas, esferas, piezas, etc.), no obstante dentro
de muchos sistemas reales los materiales no necesariamente son piezas discretas
sino fluidos. Un fluido o líquido puede ser casi cualquier cosa que se mida por
peso o volumen (leche, agua, arroz, azúcar, etc.) e incluso muchos sistemas reales
tienen líneas de producción híbridas, donde en algún momento se une material
fluido con objetos discretos (envasado de postres, bebidas, etc.). Por tanto, el 6to.
Capítulo “Un Modelo de Fluidos”, presenta los conceptos fundamentales para
construir un modelo híbrido (material discreto y fluidos) en FlexSim. Aquí, el
usuario desarrollará la simulación de un sistema donde se tenga que hacer
empaques, uniones y lotes de objetos discretos, mezclas para dosificar productos
y conversiones de objetos sólidos a material fluido y viceversa.
Al finalizar la revisión del presente trabajo, será evidente para el lector que como
resultado de este enfoque único, las aplicaciones de simulación con FlexSim son
extremadamente flexibles y contienen un entorno fácil de usar en el desarrollo,
modelación, simulación, visualización y control de las actividades y sistemas de
proceso de eventos discretos y flujos dinámicos.
Windows XP, Vista, 7, 8 o bien 8.1 (en cualquier versión tanto con 32-bit o
64-bit).
Procesador Intel con por lo menos 4 GB de RAM.
Tarjeta de video NVIDIA GeForce para mostrar con mayor calidad los
gráficos en tres dimensiones.
v
Uso de la web
El documento contiene las características más sobresalientes del libro de texto
Applied Simulation Modeling and Analysis Using FlexSim y del tutorial
Welcome to the FlexSim User Manual el cual se incluye como ayuda en el
software de FlexSim. Sin embargo, si desea conocer más sobre las bondades,
acontecimientos recientes, tutoriales, ejemplos, cursos de entrenamiento,
proyectos de consultoría, soporte técnico o cualquier otro aspecto de FlexSim,
consulte la página http://www.flexsim.com/ o bien
http://www.flexsim.com.mx/, y si lo require póngase en contacto con los
responsables del sistema.
2016
Isaías Simón Marmolejo
vi
Agradecimientos
Ningún libro es el resultado exclusivo del trabajo de su autor y este no es la
excepción. En primer lugar quiero agradecer a la empresa FlexSim Software
Products, Inc., a William Nordgren Presidente y CEO de FlexSim, al
Vicepresidente, Director de operaciones y Cofundador de FlexSim Roger
Hullinger, a Cliff King Vicepresidente de servicios al cliente, al Ing. Ben Wilson
que forma parte de FlexSim y quien tuvo mucha paciencia al explicarme algunos
modelos descritos en este documento y al Director de FlexSim México Ing. Jorge
Toucet Torné por las facilidades brindadas para la realización de este manual.
A mi hijo Yohan I. Simón que atraviesa sus tremendos cuatro años y que
con su energía contagia de alegría cada día de mi vida.
Con cariño y amor para mi linda esposa Leticia Flores a quien le robé
mucho tiempo durante el proyecto y que ha sido parte fundamental de mi vida.
A mis padres Cristina Marmolejo y Mario Simón con quienes tengo una
deuda de enorme gratitud por creer en mí y apoyarme en todas mis decisiones.
vii
viii
1 CAPÍTULO 1.
OBJETIVOS DE APRENDIZAJE
NOTA:
La fuente del total de las figuras ilustrativas aquí mostradas fueron tomadas del
software FlexSim versión 16.1.2, propiedad de la empresa FlexSim Software Products,
Inc.
2 SIMULACIÓN CON FLEXSIM
OBJETIVOS DE APRENDIZAJE
Después de un cuidadoso estudio de este capítulo usted debe ser capaz de hacer
lo siguiente:
NOTAS:
Los siguientes puntos enlistan algunas razones por las cuales FlexSim es una
buena alternativa como herramienta en simulación:
Es evidente entonces que, como resultado de este enfoque único, las aplicaciones
de simulación con FlexSim son extremadamente flexibles y contienen un entorno
fácil de usar en el desarrollo, modelación, simulación, visualización y control de
las actividades y sistemas de proceso de flujo dinámicos.
Si es seleccionada la opción
New Model se desplegará la figura 2.2, en
la cual se definen las unidades de medida
bajo las cuales se quiere operar al modelo,
las unidades de medida que elija se
mantendrán durante la construcción del
modelo y por tanto todos los datos que
sean incluidos en el modelo serán
considerados de acuerdo a estas unidades
a menos que sean cambiadas
manualmente dentro del mismo, e
incluso los reportes estadísticos
obtenidos conservarán estas unidades de
medida.
a) Menú principal
File. Con el menú mostrado en la figura 2.4 el programador podrá hacer uso de:
– Open User Libraries: Esta opción carga una o más bibliotecas guardadas,
añadiéndolas al panel de la biblioteca. Si la biblioteca contiene
componentes para la instalación automática, aparecerá un mensaje que
le pregunta si desea instalar estos componentes. Pulse OK para instalar
estos componentes.
– State Files: Guarda un modelo en ejecución actual para crear un archivo
en cualquier momento de la simulación con todas las características del
estado actual de operación, para luego cargar el estado del modelo y ser
capaz de ejecutarlo desde ese punto.
– Global Preferences: Admite mediante una ventana dinámica configurar
distintas particularidades en FlexSim, esto permite manipular el
formato, los colores, el ambiente, el uso de librerias, personalizar la
barra de herramientas, manipular los gráficos, etc.
– System: Es empleado para actualizar manualmente conexiones realizadas
con algún software externo a FlexSim.
– Exit: Cierra el programa.
View. Dentro de los comandos más comunes para alterar la vista de un modelo
se destaca los mostrados en la figura 2.6:
– Model View (3D): Permite ver al modelo en tres dimensiones; al dar clic
sobre el comando se abrirá una nueva área de trabajo al origen del
Layout.
– Model Tree: Muestra todas las carpetas y los objetos que están contenidos
en el modelo.
– Model Control GUI: Brinda la apertura de una interfaz de usuario gráfica
(Graphical User Interface “GUI”) diseñada por el modelador, la cual
permite hacer cambios en los parámetros del modelo.
– Start Page: Muestra el asistente de arranque inicial descrito con
anterioridad.
– Drag-Drop Library: El comando hace visible la biblioteca de objetos en
caso de haberla cerrado previamente.
– Toolbox: Despliega una ventana, que administra las herramientas de los
modelos, tal como Global Tables, Time Tables, Dashboards, etc.
– View Settings: Despliega una ventana de diálogo misma que puede ser
operada para configurar diferentes vistas en el modelo, estas
configuraciones únicamente aplican en la ventana activa al momento y
se desactiva al cerrarla, desde aquí es posible definir el color de fondo
del Layout (Background Color), especificar las conexiones
(Connections), configurar la cuadrícula del área de trabajo (Grid),
establecer si los nombres (Names) de los objetos serán visibles o no y
algunos ajustes más.
– Quick Properties: Abre una ventana de propiedades rápida que
contextualiza el panel de propiedades de una hoja de trabajo activa o de
un objeto seleccionado en el momento.
14 SIMULACIÓN CON FLEXSIM
Execute. Los botones resaltados en la figura 2.8, son empleados para la ejecución
del modelo:
Statistics. La ventana del menú mostrada en la figura 2.9, despliega una lista de
alternativas las cuales operan estadísticas del modelo:
Help. Por último, la figura 2.11 muestra, entre otras cosas, las principales
bondades de FlexSim y contribuye con el usuario al desplegar distintos materiales
de apoyo.
Las palabras y expresiones que se han descrito hasta ahora quizá no le resulten
del todo familiares, pero recuerde que son importantes para entender con mayor
claridad el software. Siguiendo con este orden de ideas, el apartado subsecuente
describe la barra de herramientas de la ventana principal de FlexSim.
Capítulo 2. Aprendizaje y Aplicaciones del Software FlexSim. 19
b) Barra de Herramientas
Conector de Objetos – Este ícono se emplea para conectar un objeto con otro o bien
un grupo de objetos a la vez si así lo prefiere. La intención es conectar los objetos
de acuerdo al flujo del proceso y puede ser tan simple como dar clic con el botón
izquierdo del mouse en el ícono y después dar nuevamente un clic con el mismo
botón del mouse, al objeto de inicio y uno más al objeto final, con el cual se
conectará. Esta función se puede realizar de igual forma, manteniendo presionada
la letra “A” del teclado.
Operaciones conjuntas
Creación de objetos
Crear Objetos – Al activar este ícono, usted podrá crear múltiples objetos de la
biblioteca (Library) simplemente con dar clic con el botón izquierdo del mouse
en las distintas posiciones del plano, las veces que sean necesarias, esta acción se
puede realizar también pulsando la tecla F.
Run Speed
Los objetos (Objects) en FlexSim son los distintos tipos de recursos utilizados en
la simulación, éstos se emplean para ayudar a describir en un modelo virtual el
comportamiento del sistema real y pueden brindar animación en tercera
dimensión, la cual facilite su entendimiento. Los objetos representan: cajeros en
un banco (Processor), máquinas cortadoras de una fábrica (Separator), bandas
transportadoras en una línea de producción (Conveyor), líneas de espera en un
supermercado (Queue), montacargas (Transporter) que trasportan cajas de un
punto a otro, o almacenes (Rack) en un centro de distribución, etc., también
Capítulo 2. Aprendizaje y Aplicaciones del Software FlexSim. 23
FlowItem
Figura 2.15.
Biblioteca de objetos.
Fixed Resources
Un Fixed Resource o Recurso Fijo es el lugar estático donde los FlowItems nacen
y mueren (como en un Source o Sink), son procesados o bien retenidos por un
tiempo determinado, aquí es donde la entidad puede sufrir cambios o alteraciones
para ser transformada, aquí también se pueden unir, agrupar, separar o cortar, etc.
El lugar donde se entregan los boletos para ingresar al cine y la sala donde se
proyecta la película podría ser representada por objetos fijos y en el caso de un
CEDIS de productos perecederos, las fosas de carga y descarga junto con los
racks donde se almacenan estos productos, igualmente pueden ser objetos fijos,
algunos ejemplos son:
- Source y Sink
Los objetos Source y Sink, son utilizados para iniciar y dar por terminado
el flujo de los FlowItems dentro de un modelo de simulación. Mientras
que el Source define la creación, la frecuencia de llegadas o el tiempo
interarribo y asigna propiedades tales como color, número de ItemTypes
a los FlowItems, el Sink recibe y destruye los FlowItems que finalizaron
el recorrido del modelo.
- Queue Vs Conveyor
- Rack
Task Executers
Los Task Executers son dispositivos en los cuales se apoyan los FlowItems,
frecuentemente son empleados para trasladar FlowItems de un recurso fijo a otro
a través de una red de rutas (NetworkNode) o como apoyo durante un tiempo
determinado para dar algún servicio de mantenimiento. En este libro para
referirnos a los objetos: Dispatcher, TaskExecuter, Operator, Transporter,
26 SIMULACIÓN CON FLEXSIM
- NetworkNodes
Los NetworkNodes se utilizan para definir una red de caminos que los
transportistas y operadores siguen. Las rutas se pueden modificar
mediante puntos de Spline (ranura) para añadir curvatura a la trayectoria.
De forma predeterminada, los recursos móviles que viajan en una red
seguirán el camino más corto entre su origen y destino.
Capítulo 2. Aprendizaje y Aplicaciones del Software FlexSim. 27
- Visual
Conveyors
Fluid Objects
En otro orden de ideas pero de forma semejante, para analizar las operaciones de
un sistema híbrido (entidades discretas y material fluido), FlexSim pone a
disposición del modelador Fluid Objects con los cuales no solo se podrá conducir
material fluido por una línea de producción, sino que incluso será posible mezclar
materiales continuos (fluidos) con discretos.
28 SIMULACIÓN CON FLEXSIM
FlowItem
Por lo general los FlowItems son creados, cada una de sus acciones incurre
en un tiempo determinado y dentro de ellas se almacena la información necesaria
para que los objetos fijos determinen, por ejemplo, su flujo dentro del sistema y
su tiempo de operación correspondiente, además reúnen información estadística
conforme se avanza en el tiempo, la cual servirá como apoyo en el análisis de los
resultados, estas características se definen como ItemType y Labels en FlexSim.
ItemType/Labels
Nota: Un FlowItem (con chile, con queso o las papas tradicionales únicamente acompañadas con sal)
puede tener tanto una y su cantidad (25, 50, ó 100 gramos).
Label como un
ItemType, mientras En FlexSim usted puede utilizar los comandos setlabelnum(),
que a los objetos getlabelnum(), y label() para interactuar con las etiquetas que se hayan
Fixed Resources y creado.
Task Executers sólo
se les puede asignar
Labels.
Port Connections
Resulta oportuno decir que estas no son las únicas teclas habilitadas en el teclado
como apoyo en la construcción de un modelo de simulación en FlexSim. Existen
algunas más y estos son sus usos (figura 2.18):
Descripción de teclas
X: Borra la visualización de conexiones, nodos y flechas de una red. Esta Nota: para trabajar
es empleada básicamente para ocultar en forma sucesiva las conexiones, correctamente con el
nodos y las flechas construidas con NetworkNode. También crea nuevos uso de las teclas,
puntos de Spline en una red de rutas. Para ver su funcionalidad, mantenga usted deberá
presionada la letra X del teclado y haga clic sobre uno de los nodos de la permanecer en la
vista ortográfica, de
red con el botón izquierdo del mouse.
lo contrario, las
B: Visualización de conexiones, nodos y flechas de una red. Su pulsaciones de tecla
funcionalidad es totalmente opuesta a la X. Así pues, las conexiones, no funcionarán hasta
nodos y flechas diseñadas por NetworkNode y ocultadas por la activación la segunda vez que se
de la letra X pueden ser vistas nuevamente al mantener presionada la letra pongan a prueba.
B y dando clic con el botón izquierdo del mouse sobre el nodo que no Esta acción se puede
fue oculto. En el objeto TrafficControl también puede ser utilizada esta hacer si se pulsa el
tecla. botón derecho del
mouse sobre el área
V: Visualización de Output Port /Input Port, se utiliza para ver los
de trabajo y se
nombres de los puertos de entrada y salida de un objeto. Para observar desmarca la casilla
su funcionamiento, mantenga presionada la tecla V y haga clic en un Perspective Projection
objeto con el botón izquierdo del mouse. contenida en la
C: Visualización de las conexiones de Puerto Central, se emplea para ventana derecha de
ver las conexiones de Puerto Central de un objeto. Presiónela y haga clic nombre Quick
en un objeto con este tipo de conexión y podrá notar los resultados. Properties. Si
F y R: Estas dos letras se usan para crear objetos y conectarlos a la vez, después de esta
dichas funciones fueron explicadas anteriormente en la barra de acción desea
herramientas. regresar a la vista en
G: Propiedades de conmutación rápida, su activación permite cambiar el perspectiva, es
enfoque de la ventana de propiedades de un objeto dentro del modelo. necesario activar
La vista ortográfica recuerda la última ventana de propiedades que se nuevamente el
abrió. Después de activar la vista ortográfica, mantenga presionada la comando Perspective
tecla G y haga clic en un objeto, la última ventana de propiedades abierta Projection. Para más
actualizará su enfoque para el nuevo objeto. detalles, revise el
siguiente apartado.
34 SIMULACIÓN CON FLEXSIM
Adicional a estas vistas existe una más: la vista Data Tree View
(visualización de estructura de datos), la cual permite navegar a través de una
estructura de árbol FlexSim para ver o configurar los atributos de los objetos,
escribir códigos y hacer muchas otras operaciones.
Capítulo 2. Aprendizaje y Aplicaciones del Software FlexSim. 35
Toda la información del modelo está contenida dentro del árbol FlexSim
jerarquizada en nodos individuales, incluyendo los objetos de la biblioteca,
comandos, etc.
La navegación dentro del área de trabajo o Layout, se puede hacer a través del
mouse. Si se desea un desplazamiento horizontal basta con hacer clic y mantener
el botón izquierdo del mouse presionado mientras se arrastra por el área de
trabajo. Para girar la vista del área de trabajo se deberá hacer clic izquierdo, y
mantener presionado el botón derecho del mouse sobre el área, arrastre el mouse
en distintas direcciones. Para poder hacer un enfoque (zoom), es necesario
mantener pulsados ambos botones del mouse y mover el mouse hacia arriba y
hacia abajo, el mismo resultado se obtiene al mover el scroll del mouse hacia arriba
o hacia abajo. Ahora bien, si se encuentra trabajando dentro de la vista en
perspectiva, la tecla F8 podría darle una navegación guiada. Pero antes de
presionar esta tecla es necesario cerciorarse que el puntero del mouse este en el
centro del modelo, de lo contrario podría perder momentáneamente su diseño
dentro del área de trabajo. A continuación usted puede pulsar la tecla F8, mueva
el mouse en todas direcciones para explorar su uso, si desea dar por terminada la
navegación guiada presione nuevamente F8. Si por alguna razón perdió su modelo
dentro del área de trabajo y por más que busca no lo encuentra, olvide esa pantalla
y diríjase a la barra de herramientas, ahí encontrará el ícono 3D Model View
( ), presiónelo y se abrirá una nueva ventana al punto de origen donde
podrá ver nuevamente su modelo. En la ventana de diálogo localizada dentro de
menú View>View Settings, puede alterar el diseño y los colores del área de trabajo
en infinidad de formas.
selección de los objetos, hay que dar Shift+Clic sobre el área de trabajo (véase la
figura 2.21).
Modelos
Figura 2.22.
Modelado de una célula
de manufactura.
Recomendaciones
OBJETIVOS DE APRENDIZAJE
NOTAS:
Para terminar y entender con claridad la construcción de cada modelo, el diseñador deberá
disponer de por lo menos 60 minutos. ¡Mucho éxito!
40 SIMULACIÓN CON FLEXSIM
En este primer modelo se trabajará con los objetos: Source, Queue, Processor,
Conveyor y Sink.
Descripción:
Dentro de FlexSim, ubique la biblioteca de objetos, haga clic sobre cada uno de ellos
y arrástrelos uno a uno hacia la ventana de visualización 3D o área de trabajo. Una
vez que tenga todos los objetos dentro del área de trabajo, ordénelos de acuerdo al
flujo antes descrito, recuerde que el flujo será de izquierda a derecha o bien del puerto
de salida al puerto de entrada como se mencionó anteriormente, ver figura 3.1.
Figura 3.1.
Colocación de Fixed
Resources dentro de
Model View (3D)
tomados de la
biblioteca para
construir nuestro
primer modelo.
Una vez terminado el diseño, es necesario hacer la conexión de los objetos de acuerdo
con sus respectivos puertos. En la barra de herramientas, hay un botón que permite
seleccionar el tipo de conexión de puerto necesario, observe la figura 3.2. La letra en
el menú desplegable muestra los distintos modos para hacer conexiones. Seleccione
la letra “A” definida como Connect Objects (A) desde este menú y haga clic
izquierdo en el objeto donde se quiere iniciar la conexión de puertos. Después de
haber realizado lo anterior, usted notará una línea de color amarillo dibujada desde el
objeto seleccionado hasta el puntero del mouse. Con esta línea amarilla en el puntero
del mouse, aproxímese lo más que pueda al objeto que desea conectar, al hacer esto
se puede observar que esté es resaltado con un cuadro amarillo. En este momento
pulse nuevamente el botón izquierdo del mouse sobre cualquier parte del objeto y se
conseguirá una conexión. Si la conexión de los puertos Output Port e Input Port
se estableció correctamente debería verse ahora una línea de color negro con
extremos en forma de triángulo de color rojo, los cuales conectan a los dos objetos
seleccionados. Dependiendo de la configuración, el triángulo rojo puede ser
ocultado, pero ahora se muestra de forma predeterminada, de manera sucesiva
42 SIMULACIÓN CON FLEXSIM
conecte al resto de los objetos que se encuentran dentro del área de trabajo. Recuerde
que la conexión es de izquierda a derecha y aunque no siempre es necesario, para este
modelo deberá iniciar la conexión de acuerdo con la dirección del flujo. Iniciemos
con el objeto Source y conectemos sucesivamente hasta llegar al Sink.
Una vez que las conexiones están hechas, pulse la tecla Esc para volver a la
funcionalidad estándar del mouse o presione el botón Standard Mode (Esc)
ubicado a la izquierda de Connect Objects.
Con los objetos en su lugar y sus puertos conectados, es necesario editar los mismos
para obtener la configuración deseada. El concepto Properties (propiedades), se
refiere a un conjunto de atributos editables. Las propiedades de un objeto
corresponden con su función y el comportamiento del mismo: cuánto tiempo los
FlowItems permanecerán dentro del objeto y a dónde irán cuando sean liberados,
así como la manera en que lucen (forma, dimensiones, color, etc.).
Imagen del objeto. Esta corresponde al tipo de objeto que se está editando.
Nombre del objeto. Este espacio está dedicado para que el modelador coloque el
nombre que desee asignarle a su objeto y así lo pueda reconocer en diferentes
operaciones del modelo. Es importante mencionar, que no deberán usarse los
caracteres como: >, <, *, -, ( ), etc., para que FlexSim funcione correctamente.
Espacios y guiones si están permitidos pero ningún nombre deberá iniciar con un
número. Si en la edición de objetos subsecuentes se utiliza este mismo nombre para
otro objeto se producirá un error, pues no puede utilizar el mismo nombre para dos
objetos distintos.
Botón vista de árbol. Este botón abre una ventana que muestra sólo el árbol de Nota: Algunas
edición del objeto. propiedades del
objeto se actualizan
Ayuda. Al pulsar este botón se abrirá el manual de usuario en la página que describe de manera inmediata
la ficha que se encuentre seleccionada. al cambiarlas en la
ventana. Estos
Más detalles sobre la edición de objetos se revisarán en los ejemplos cambios
complementarios. permanecerán y no se
moverán aunque sean
cancelados. Por
ejemplo, al colocar
Breakdowns, Labels,
al modificar la
apariencia, posición,
rotación, tamaño y
puertos.
46 SIMULACIÓN CON FLEXSIM
Source
Después de lo antes expuesto. Abra la ventana de propiedades del objeto Source con
doble clic y dentro de la pestaña Source para este caso, localice la lista de selección
de opciones Inter-Arrivaltime. Al desplegar esta lista usted podrá notar que hay una
opción llamada Statistical Distribution, si hace clic se mostrará una variedad de
distribuciones estadísticas como opciones disponibles para editar este atributo. Al
abrir la ventana seguramente notó que la distribución exponencial es la opción por
default con un valor de ubicación de “0” y un valor de escala de “10”.
Queue
Dado que en el Queue se puede tener cualquier cantidad de frascos esperando a ser
procesados, se dejará este objeto bajo las condiciones predeterminadas.
Conveyor
Processor
Figura 3.7.
Configuración tiempo
del proceso de la
máquina etiquetadora.
Capítulo 3. Construcción de un Modelo Básico. 49
Para que pueda navegar correctamente sobre el área de trabajo revise nuevamente el
tema Fundamentos de la Navegación en FlexSim del apartado 2.3.2. Conceptos
Adicionales. Ahí encontrará como manipular las dimensiones y ubicación de los
objetos, además podrá explorar las distintas vistas del modelo que usted acaba de
diseñar.
Una vez puesto en ejecución el modelo de simulación, observe que los FlowItems se
pasan de un objeto a otro en un tiempo cero independientemente del lugar donde
estos se ubiquen en el área de trabajo. Por ejemplo, el tiempo que le tomará a un
FlowItem viajar del Queue al Conveyor será instantáneo, no importa cuán cerca o
lejos estén uno del otro. En este sentido, los tiempos de viaje entre los objetos serán
considerados como insignificantes en el funcionamiento del modelo y por lo tanto
será ignorado.
Los archivos guardados con la extensión CSV sólo registran los datos del
tablero de instrumentos.
Cuando se guarda con el formato HTML, se permite al usuario cambiar el
tamaño y la organización de todos los Widgets contenidos en el tablero, estos
archivos son completamente independientes y se pueden abrir en cualquier
computadora con un navegador web (aunque algunos navegadores web
pueden no ser compatibles), después de cambiar el tamaño y la organización
de los Widgets en la vista HTML, el archivo puede ser salvado de nuevo para
conservar el diseño.
Para almacenar imágenes con mayor resolución, el formato PNG da
una profundidad de contraste gráfica basada en un algoritmo de
comprensión sin pérdida de bitmaps.
Un Text Panel. Es una tabla de datos textuales, este panel puede ser usado
para mostrar el estado de las variables, las estadísticas y los datos actuales de
uno o varios objetos.
Bar Chart Vs Pie Chart. Una gráfica de barras permite emplearse para ilustrar
contenidos promedio, estado de los objetos, entradas y salidas de FlowItems
por unidad de tiempo y muchos otros temas adicionales, mientras que una
gráfica de pastel muestra únicamente el estado del objeto durante su
ejecución.
Linear Graph. La ficha correspondiente a la gráfica lineal, busca ilustrar las
variables de interés del usuario a través de gráficas de tiempo.
Gantt Chart. Hay dos tipos de gráficas de Gantt: La State Gantt Chartes, usual
para crear gráficas de Gantt de la información específica de los objetos en
función del tiempo, mientras que la ficha Item Trace Gantt Chart, ayuda al
modelador a construir gráficas de Gantt con información correspondiente a
los cambios que sufrieron los FlowItem a través del tiempo. Por ejemplo, es
posible observar; el tiempo en que un Item es creado, a través de qué objetos
el Item viajó y en qué momento. La herramienta hace un registro del
seguimiento de los Items aun cuando el Item está en un objeto durante un
tiempo “0”.
54 SIMULACIÓN CON FLEXSIM
Con el fin de dar por concluído el primer ejemplo, recuerde que para hacer
inferencias validas, los modelos de simulación se estabilizan al hacer ejecuciones
con periodos de tiempo largos. De igual forma, tenga presente la importancia de
ejecutar el número necesario de réplicas, pues las ejecuciones múltiples
contribuyen también a mejorar la validez de la inferencia. Así, un mayor número de
réplicas implica un número más elevado de muestras aleatorias independientes con
distribuciones estadísticas diversas. Estas configuraciones no se describen en este
libro pero pueden ser definidas dentro del menú
Statistics>Experimenter…>Experiment Run.
Capítulo 3. Construcción de un Modelo Básico. 55
Propósito:
Descripción:
Ahora que ha construido con éxito su primer modelo en FlexSim, puede resolver
este ejercicio sin problema. Si tiene abierto el modelo del Ejemplo 1, sólo vuelva a
guardar este modelo pero con el nombre de Problema 1.
similitudes. Tenga en cuenta que al duplicar un objeto existente, se crea una instancia
nueva del objeto, por lo que los cambios realizados en la copia o el original son
completamente independientes.
Bien, espero haya tenido éxito porque aún debe responder las siguientes preguntas:
Antecedentes
Crazybus Pachuca, es una nueva línea de metrobus que desea instalarse en la ciudad
de Pachuca, Hidalgo. Esta nueva línea pretende proporcionar un servicio de
transporte del Tecnológico a la Central de Autobuses, con su flota de metrobuses
regionales. La empresa considera que este es el medio adecuado para que los alumnos
del Tecnológico viajen rápidamente a la Central de Autobuses. Su compromiso es
hacer tantos viajes como sean necesarios, siempre y cuando existan alumnos que
deseen viajar. Ellos esperan que el número de alumnos que viajarán aumente, pues
los autobuses que actualmente usan los futuros ingenieros serán dados de baja el
siguiente año.
considera que el nivel de servicio será inadecuado y que los agentes estarán de ociosos
mucho tiempo. Pero, como no desea explicarle esto al propietario de la firma sin
ningún sustento, a través de un modelo de simulación decide crear un escenario de
lo que podría ocurrir.
Usted cree que las operaciones en las ventas serán ineficientes y decide usar la
simulación como herramienta para ilustrar el comportamiento del sistema al dueño
de la firma.
Información referente
Paso 2. Utilice el diagrama de la figura 3.10 como referencia para crear el modelo,
recuerde que será necesaria una línea como esta para cada tipo de cliente.
Nota: usted
necesitará tres
líneas como estas
para representar su
modelo.
58 SIMULACIÓN CON FLEXSIM
Paso 3. Para programar los atributos de cada uno de los objetos utilice la siguiente
información:
– Tablas de Distribuciones
Tarjeta electrónica Media: 5 min. Clave: exponential(0, 5, 0) Media: 3 min, Desv: 1 min Clave: normal(3, 1, 0)
Tickets de prepago Media: 10 min. Clave: exponential(0, 10, 0) Media: 8 min, Desv: 3 min Clave: normal(8, 3, 0)
Compra de boleto Media: 15 min. Clave: exponential(0, 15, 0) Media: 12 min, Desv: 3 min Clave: normal(12, 3, 0)
Paso 4. FlowItems. Al crear su modelo usted tendrá como salida cajas de los tres
Sources, estas cajas pueden ser remplazadas por objetos en forma de personas. Dé
doble clic sobre el Source que desee editar y en la primera pestaña “source”, ubique
la lista de selección de opciones llamada FlowItem Class y seleccione Person, después
dé clic en Apply y Ok. Ejecute su modelo para ver los cambios. Si puede, asigne un
color de camiseta a los clientes de cada Source (Source1 = rojo, Source2 = azul y
Source3 = verde). Un tip para hacerlo es abriendo la ventana de propiedades del
Source y dentro de la pestaña Triggers, ubique la lista de selección OnExit. Aquí hay
un comando llamado Set Object Color que puede editar (el tema se ampliará en
ejemplos subsiguientes.).
Capítulo 3. Construcción de un Modelo Básico. 59
Resultados esperados:
OBJETIVOS DE APRENDIZAJE
Descripción:
Diseño
Conveyor
El nuevo Conveyor lanzado en esta versión de FlexSim, es uno de los objetos más
avanzados, rico en funciones y fácil de usar. Algunos de sus beneficios incluyen:
Los siguientes capítulos del libro explicarán poco a poco y a detalle cómo
incorporar estas nuevas funciones avanzadas del Conveyor en sus modelos de
simulación.
Conexión
Conecte cada uno de los objetos conforme al flujo de los FlowItems. Cuando conecte
el primer Queue con los cuatro Processors, recuerde que dependiendo del orden en
que usted conecte los objetos, se irán creando puertos numerados a partir de la
primera conexión, esta numeración es importante, pues será empleada para definir la
ruta de los FlowItems. Para nuestro ejemplo conecte de arriba hacia abajo.
En el capítulo 5 del libro “Discrete-Event System Simulation” (Banks et. al., 2009),
se discute la importancia del empleo de distribuciones estadísticas como apoyo para
representar un sistema real. En términos más simples, una variable con un
comportamiento caracterizado por una distribución de probabilidad permite que el
modelador tenga acceso a distintos tipos de “números aleatorios". En FlexSim para
utilizar una distribución adecuada, usted necesita saber tres cosas: el nombre de la
distribución, los parámetros (o argumentos) necesarios y el lugar donde será usada.
Capítulo 4. Construcción de un Modelo Paso a Paso. 69
Ya hemos hablado del campo Send To Port, pero ahora vamos a echar un vistazo
más de cerca, la lista de selección Send To Port se encuentra dentro de la ventana de
propiedades de todos los recursos fijos en la pestaña llamada Flow o flujo (para el caso
de los Conveyors, es necesario agregar un objeto Decision Points como complemento
de este mismo). En este sentido, cuando el FlowItem está listo para ser enviado al
siguiente objeto se hace una evaluación de la dirección que tomará. Por ejemplo, en
un Processor el FlowItem está listo para ser enviado cuando este terminó su tiempo
de operación. La expresión Send to Port devuelve un número de salida que
corresponda a un puerto válido, y así, es posible referenciar los FlowItems a un
número de puerto. Usted puede utilizar una distribución estadística para obtener
números aleatorios del puerto, o la información consultada de un FlowItem
correspondiente a un número de puerto (por ejemplo, un ItemType). Un número de
puerto valido se considera cuando existe un puerto con ese número. Es decir, si usted
quiere enviar un FlowItem a través del puerto 50, el modelo debería tener un puerto
número 50, de lo contrario los FlowItems enviados a este puerto no serán capaces de
salir del objeto que los contiene.
Una vez que el campo Send To Port es evaluado, el puerto de salida se abrirá
y el FlowItem es empujado al siguiente objeto, siempre que la conexión de puertos
esté lista (una conexión está lista cuando el puerto de salida y el puerto de entrada
están abiertos). En caso de que la expresión Send To Port devuelva un “0”, todos los
puertos de salida se abrirán y el FlowItem podrá salir por el primer puerto disponible.
Si la función devuelve un “-1” entonces el FlowItem no se mostrará, esta información
de comandos especiales la puede consultar en el manual de ayuda del software.
Para añadir los detalles que definirán el comportamiento de los objetos tales como el
tiempo de proceso necesario para las piezas nuevas o piezas reprocesadas, es
necesario agregar una bandera a los FlowItems que indique a los objetos su diferencia,
además de hacer uso eficaz de los triggers.
Hay algunos comandos especiales que usted necesita conocer para trabajar
con Labels. Pues, la creación de un lugar para almacenar información no es muy útil
sin una manera de establecer o consultar los datos. Al igual que en las distribuciones
de las que hablamos anteriormente, estos comandos tienen parámetros asociados a
los mismos, los cuales son requeridos para su buen funcionamiento. En el caso de las
Labels, estos parámetros funcionan como un tipo de dirección, ellos nos permiten
identificar dónde existe una etiqueta:
getlabel(item,"prueba")
Nuevamente tenga en cuenta que el nombre de la etiqueta tiene que estar entre
comillas. El resultado de este comando será cualquier número almacenado dentro la
etiqueta "prueba" la cual pertenece al FlowItem referenciado por el termino item. Si
hay un comando get también hay comando complementario set.
En este ejemplo muy sencillo, hemos elegido utilizar un número estático (1)
como el valor que se asigna a la Label. Muchas veces esto es suficiente pero dependerá
mucho de los objetivos que se busquen en el modelo. Sin embargo, es importante
tener en cuenta que el valor asignado puede ser también una distribución de
probabilidad. Existen comandos distintos que tienen que ver con la obtención y el
establecimiento de valores no numéricos en una Label. La ayuda de FlexSim describe
a detalle estos usos.
Una vez creados y conectados los objetos, y después de haber entendido los
conceptos necesarios, iniciaremos con la programación.
el comando, se crea una cadena de búsqueda para encontrar una tabla con ese
nombre, por lo que sí está mal escrito o no hay comillas alrededor del nombre, el
comando dempirical no sabrá que se indicó la búsqueda de esa tabla. Este concepto
puede parecer confuso ahora, pero tendrá más sentido si observamos la figura 4.4,
donde quedo asignado el comando.
Trabajemos ahora con las Labels. En este modelo, las Labels serán empleadas para
diferenciar una pieza nueva de una defectuosa y servirán como una bandera tanto
para que el primer Queue configure la prioridad de entrada de los FlowItems en los
procesadores, como para programar los tiempos de operación mismos que dependen
del tipo de FlowItem que será manipulando.
Ahora que sabemos que existen muchas maneras de crear y manipular el uso
de las Labels, en este modelo vamos a crear dos Labels. Para empezar es necesario
definir la primer Label en cada FlowItem antes de que estos sean creados por el
Source.
Los objetos Sources no crean FlowItems por sí mismos, sino que crean copias
Capítulo 4. Construcción de un Modelo Paso a Paso. 77
Importación de imágenes
Para introducir con éxito una segunda Label dentro de cada FlowItem y dado que
por el momento el Conveyor en esta nueva versión de FlexSim no posee una forma
rápida de agregar estas etiquetas, se decodificará una lista de selección de opciones
del objeto Decision Point perteneciente a la primer sección del Conveyor. En este
entendido, será necesario detallar el uso de las Pick Lists.
Pick Lists
Asignación de Labels
setnodenum(assertlabel(involved,labelname,DATATYPE_NUMBER),newvalue);
} //******* PickOption End *******\\
Capítulo 4. Construcción de un Modelo Paso a Paso. 81
Involved: permite definir el Item que desea manipular, como aquí no tenemos
preferencia para ningún FlowItem entonces esta instrucción se generaliza para todos
los FlowItem que pasen por aquí, la instrucción Labelname describe el nombre de
nuestra segunda etiqueta el cual es “Pieza Defectuosa” y finalmente con New Value se
establece el número “2”. El dos, es entonces el valor predeterminado de la segunda
Label y se puede utilizar para indicar que un FlowItem el cual ya fue inspeccionado
no paso la prueba y requiere reproceso. Para aplicar los cambios de Apply>Ok a las
dos últimas ventanas emergentes. Ver figura 4.10.
Los próximos pasos a seguir para la construcción de este modelo son: definir
como emplear Send To Port para indicar el flujo que seguirá cada una de las cuatro
piezas en los diferentes procesadores y seleccionar el trigger adecuado que permita
ordenar la entrada de las piezas nuevas y las que entraran a reproceso.
Las piezas se procesan en una de las cuatro máquinas, pero como cada máquina
procesa sólo un tipo de pieza es necesario entonces identificar en el primer Queue el
tipo de ItemType que contiene un FlowItem y así podremos asignarle la operación
que le corresponde. Pero antes de iniciar con la programación del Queue, se
82 SIMULACIÓN CON FLEXSIM
explicarán las bondades de la pestaña Flow, dé doble clic sobre el primer Queue y
seleccione la pestaña Flow.
Figura 4.11. La
imagen muestra la
pestaña Flow del
objeto Queue
Output:
- Send To Port: Específica la lógica que determina a través de que puerto el
FlowItem puede viajar después de dejar el objeto que lo contiene.
- Use Transport: Cuando esta opción es seleccionada, es llamado un recurso
móvil para transportar los FlowItem de este a otro objeto, y el menú
desplegable es usado para especificar que recurso móvil debería ser usado.
Input: La opción Pull es usada cuando los FlowItems deberían ser jalados al
objeto actual en lugar de que sean empujados desde el objeto anterior.
- Pull Strategy: Específica la estrategia de la lógica empleada para definir cuál
puerto o puertos deberían ser usados.
- Pull Requirement: Refiere la lógica para jalar a los FlowItems de acuerdo
con algún criterio, tal como, un ItemType o un valor de etiqueta.
Capítulo 4. Construcción de un Modelo Paso a Paso. 83
Del mismo modo si emplea alguna opción Pull, los FlowItems pueden ser
jalados de objetos antecesores basándose en: By Expression (por ejemplo:
getitemtype(item)), Longest Queue (la fila de entrada más larga), en forma Round
Robin (asignación a todos los recursos con la misma constancia de oportunidades),
Conditional Port (de acuerdo a una condición específica como una distribución de
probabilidad), etc. O bien, puede hacer configuraciones lógicas utilizando el ícono de
códigos en forma de pergamino, localizado a la derecha de esta lista de selección.
sobre la lista de selección de opciones del trigger Send To Port, ahí dentro elija la
categoría Port By Case (o Values By Case). Como usted puede observar, el comando
getitemtype(item) está asignado por defecto así que dejemos este espacio tal y como
esta. Posteriormente dé clic en el ícono y agregue tantos casos como sean necesario
(para nuestro modelo sólo son necesarios 4 casos distintos). En la columna izquierda
numere del caso 2 al caso 4, estos valores permitirán identificar qué tipo de ItemType
(o número de pieza) tiene como atributo cada FlowItem, como puede ver no es
necesario numerar el caso 1 pues este es definido de manera predeterminada. En la
columna de la derecha coloque el número de puerto por el que deberá salir cada
FlowItem según
corresponda. Esto obliga al
Queue a liberar a la pieza 1
por el puerto 1, a la pieza
2 por el puerto 2 y así
sucesivamente. Entonces
lograremos que el
Figura 4.13. Processor4 procese
Programación del flujo únicamente las piezas con
de los FlowItems el ItemType 1, el
mediante la Processor5 manipulará a las
clasificación Values By piezas con el ItemType 2 y
Case. así consecutivamente.
Véase figura 4.13.
Recordemos que en la descripción del problema fue solicitada una instrucción para
dar prioridad de entrada a las piezas que serán reprocesadas. Es decir, si dentro de la
línea de espera hay formadas seis piezas del tipo 1 con la etiqueta “Pieza Nueva”
esperando a ser procesadas y llega una séptima pieza del mismo tipo pero con la
etiqueta “Pieza Defectuosa”, esta última deberá formarse al inicio de la línea de espera
para que inmediatamente después de que el procesador esté disponible la atienda y
no tenga que seguir formada.
anterior ordenará al Queue dar prioridad de entrada a las piezas que tengan la etiqueta
“Pieza Defectuosa”. Finalmente de clic en Apply y Ok. Véase figura 4.14.
Figura 4.14.
Programación de
prioridades de en una
línea de espera.
etiqueta “Pieza Defectuosa” con valor de 2, entonces siempre que esta llegue a la
máquina le aplicará un reproceso con un tiempo de proceso de uniform(130, 150, 0).
Nota: observe que existe un cero al final de la instrucción anterior, este “0” hace
referencia a la Stream. Aplique estos cambios a cada una de las cuatro máquinas.
Con todo lo que se ha revisado hasta ahora, usted es capaz de identificar las listas de
selección de opciones para hacer que el tiempo de inspección corresponda a una
constante de 15 segundos. No olvide que las piezas que pasan la prueba, salen del
sistema a través de un Sink (Port 2), pero las piezas defectuosas se dirigen nuevamente
mediante el Port 1 de la banda transportadora al primer Queue para ser procesadas
nuevamente (el 20% de las piezas no pasan la prueba de inspección). Ver figura 4.16.
Hay una última cosa que hace falta para cumplir con los requisitos
de este segundo modelo básico, usar un transporte para mover los
FlowItems de un objeto a otro. Para satisfacer este requisito, se definen
nuevos conceptos que requieren de su atención. Sin embargo, las
instrucciones son tan simples como determinar el(los) objeto(s) adecuado(s),
elegir las listas de selección de opciones correctas, y después distinguir y
editar las alternativas convenientes que permitan cumplir con las necesidades
del modelo.
Capítulo 4. Construcción de un Modelo Paso a Paso. 87
tenemos hecha una sola conexión central, podemos dejar el valor de “1” mismo que
aparece como predeterminado. Ahora bien, cuando se ejecuta el modelo nuevamente
en lugar de ver que los FlowItems se pasan de un objeto a otro de manera automática,
verá que el operador recoge y entrega los FlowItems correctamente en su destino.
Usted puede obtener algunas variaciones interesantes en el comportamiento del
recurso móvil si mueve los objetos fijos a diferentes puntos del área de trabajo.
Cuando se utiliza un recurso móvil para el transporte, las distancias a recorrer pueden
ser de mucho interés en el análisis del modelo.
Lo anterior funciona muy bien en situaciones en las que se sabe que sólo es
necesario un recurso móvil para ejecutar una tarea, pero ¿qué pasa si usted tiene un
equipo de operadores que desea utilizar? o ¿cuándo se necesita agregar o quitar
rápidamente miembros de ese equipo? esto se puede lograr fácilmente con el uso del
objeto Dispatcher.
El objeto
Dispatcher interactúa con
los recursos móviles de un
modo especial, pues
permite que las tareas que
están siendo generadas por
un recurso fijo se deleguen
a un grupo de recursos
móviles, poniéndolos a
disposición de un recurso
fijo siempre que estos
estén disponibles. Por
defecto, las tareas son
asignadas a los recursos
Figura 4.17. Conexión
móviles de acuerdo a como
de un Dispatcher.
estas vayan apareciendo,
pero los modeladores
pueden especificar sus
Nota: conecte del propias estrategias en el Dispatcher si así lo desean. Para configurar un equipo de
Dispatcher a los recursos móviles como se muestra en la figura 4.17, arrastre un Dispatcher y dos o
Operadores no al más Operators al área de trabajo. Conecte con la tecla “A” presionada, al Dispatcher
revés, de lo con los Operators. A continuación, conecte con la tecla “S” presionada, al Dispatcher
contrario los con el primer Queue. Para terminar, entre a la ventana de propiedades del Queue y
Operators no se en la pestaña Flow active Use Transport. Ahora que hemos terminado, el equipo de
moverán.
Capítulo 4. Construcción de un Modelo Paso a Paso. 89
Como se ha comentado con antelación, a través del uso de una gráfica lineal incluida
dentro de una ventana Dashboard, es posible visualizar informes estadísticos rápidos
sobre la puesta en marcha del modelo. El objeto que aquí se observa es una gráfica
lineal de nombre Time in System. Este tipo de grafico es un recurso especial de
FlexSim, se utiliza para registrar y visualizar la información estadística de los
FlowItems mientras el modelo se ejecuta. La gráfica Time in System registra el tiempo
en el que un FlowItem deja el modelo y el tiempo total que permaneció en el modelo,
y con ellos se crean series de puntos gráficos.
Por otro lado, el Text (herramienta visual) es otro recurso especial, que se
puede utilizar para mostrar información de un objeto mientras se ejecuta el modelo.
En la actualidad, las herramientas visuales pueden ser el recurso más versátil de la
biblioteca de objetos. Se puede utilizar como apoyo visual para crear elementos en
3D como: muros, contenedores de objetos, pantallas de texto e incluso estos recursos
son el medio por el cual podemos insertar el diseño de un plano completo creado en
AutoCAD. Si utilizamos alguna herramienta visual como pantalla de texto podrá ver
información sobre los objetos o bien podrá realizar un seguimiento de datos
personalizado. Para hacer un ejercicio rápido, sólo tiene que arrastrar un objeto de
nombre Text dentro del modelo, como puede apreciarse al colocarlo en el Layout se
muestra el texto “Hello”, dé doble clic en el para tener acceso a la ventana de
propiedades y en la opción edición de parámetros modifique el nombre si lo desea.
También es posible vincular a un Text con otros recursos a través de los puertos de
conexión central. Esto permite que una herramienta visual haga referencia a otros
recursos y muestre sus estadísticas, intente probar con esta alternativa.
Figura 4.19:
Estadísticos de algunos
recursos y gráfica de
pastel que muestra sólo
21 estados de los 50
disponibles en un
objeto.
Capítulo 4. Construcción de un Modelo Paso a Paso. 91
5.1 INTRODUCCIÓN
5.2 EJEMPLO: 1.1. SISTEMAS PULLED O PUSHED Y EL USO DE LA
DISTRIBUCIÓN BERNOULLI
5.3 EJEMPLO: SISTEMA DE ENRUTAMIENTOS COMPLEJOS
5.4 EJEMPLO: LÓGICA FLEXSCRIPT Y PRIORIDAD DE USO
5.5 EJEMPLO: LOS OBJETOS TASK EXECUTERS Y LA
INTERRUPCIÓN DE TAREAS
5.6 EJEMPLO: RECURSOS MÓVILES Y RUTAS DE VIAJE
5.7 EJEMPLO: USO DEL RECURSO COMBINER E IMPORTACIÓN
DE DATOS DE EXCEL
5.8 EJEMPLO: PROGRAMACIÓN DE AVERÍAS Y
MANTENIMIENTO EN LOS EQUIPOS CON LA HERRAMIENTA
MTBF/MTTR
OBJETIVOS DE APRENDIZAJE
5.1. INTRODUCCIÓN
Hasta este momento sólo hemos tratado con escenarios Push, donde los recursos
intermedios en operación deciden la forma en que deben enviarse FlowItems al
siguiente recurso después de ser liberados o empujados a través de su puerto de salida.
En la mayoría de los modelos, este es exactamente el comportamiento que usted
necesitará, por tanto, es este el modo predefinido en el comportamiento de los
recursos fijos. Sin embargo, es posible encontrarse con escenarios difíciles de modelar
que pueden ser simplificados mediante el uso de un sistema Pull en lugar de un Push.
El modelo del Ejemplo 3 será construido bajo criterios distintos a los conceptos
establecidos en el ejercicio anterior (Ejemplo 2).
en el ItemType de un FlowItem.
Descripción:
5.2.1. Conceptos
Un sistema Pull es definido cuando los recursos fijos intermedios de una cadena de
objetos evalua los FlowItem disponibles antes de jalarlos través de los Input Ports. Un
ejemplo claro sería imaginar que un Processor arrebata FlowItems de un Queue que
lo antecede, siempre y cuando los FlowItems cumplan con ciertos requisitos
establecidos por el Processor.
La forma en que trabajan los sistemas Pull y Push es similar, pero existen
algunas diferencias significativas. En el sistema Push, el primer evento que ocurre es
OnEntry (una entrada) causada por un FlowItem que entra a un recurso, sin embargo
en el sistema Pull lo primero que debe ocurrir es que se tenga disponible
un FlowItem. Posteriormente, una serie Pull Requirement es evaluada; estos
requisitos establecen reglas específicas definidas por el usuario, las cuales indican las
características que un FlowItem debe poseer antes de ser jalado hacia un recurso. Si
los FlowItems cumplen con los requisitos establecidos, estos son jalados hacia el
recurso. El tiempo de retardo está asociado con cualquier retardo de viaje que puede
ser aplicable a la situación, así que por ahora no se preocupe. Después de lo anterior,
la ejecución de la simulación sigue siendo Push hasta después del evento OnExit
(salida). Cuando los FlowItems son empujados, OnExit es el último evento que
ocurrirá en el recurso fijo, por tanto, la evaluación del campo Pull Requirement sucede
justo después de OnExit. La lista de selección de opciones Pull Requirement se
encuentra contenida en la pestaña Flow de todos los recursos fijos y se utiliza
entonces para indicar al objeto por cuál de sus puertos de entrada puede pasar un
FlowItem disponible.
Capítulo 5. Aplicaciones y Usos Variados. 97
distribución Bernoulli. Asigne un color para cada ItemType y dé clic en Apply y Ok.
Véase la figura 5.2.
Otra programación importante debe hacerse dentro de cada uno de los cinco
Processors.
Con esos pequeños cambios usted logrará modelar su pequeño sistema bajo
las condiciones establecidas en un inicio.
Figura 5.3.
Programación del
tiempo de proceso y
estrategia Pull.
Capítulo 5. Aplicaciones y Usos Variados. 99
Ahora que hemos aprendido más sobre ItemTypes, Labels y enrutamientos, sigamos
con la explicación de Global Table para definir flujos de FlowItems en distintas
direcciones; estos son muy comunes en diversos modelos.
Descripción:
Actividades extras:
5.3.1. Conceptos
En el Ejemplo 2, se dio una pequeña introducción al uso de las tablas globales para
Nota: es preferible la utilización de un conjunto de datos derivados empíricamente como una
utilizar números distribución estadística. Ahora haremos uso de estas en un conjunto de datos de una
tanto en Labels forma más natural como los podríamos ver en Excel. Al igual que las Labels, las
como en Tablas Tablas pueden contener información como texto y datos numéricos. Los comandos
siempre que sea que se utilizan para manipular los datos de una celda, siguen un patrón similar a los
posible, ya que este comandos empleados para hacer referencia a una Label.
tipo de datos son
más fáciles y rápidos Es posible utilizar gettablenum para consultar datos de una celda. Para usar este
de manipular. comando debe escribir:
gettablenum("tablename", rownum, colnum)
Figura 5.4.
Distribución y
conexiones de los
puertos del modelo.
Asegúrese de que su diseño luzca exactamente como el que se muestra en la Nota: tanto los
figura anterior. El primer procesador debe estar conectado en el puerto de salida uno puertos de entrada
del Queue, el segundo procesador en el segundo puerto de salida, y así sucesivamente como los de salida
hasta que el Sink se encuentre en el sexto puerto de salida. de las diferentes
estaciones deberán
estar conectados al
Queue.
102 SIMULACIÓN CON FLEXSIM
Si usted edita los nombres de los recursos puede colocar cualquier otra
descripción, pero recuerde que no se pueden asignar dos nombres iguales y tampoco
se admite el uso de caracteres reservados como acentos y algunos otros.
Programación
Usted deberá utilizar una Global Table para indicar las decisiones de
enrutamiento que cada ItemType tendrá en sus distintas etapas de su proceso. Los
datos en las celdas de la Tabla deberán representar los números de cada puerto.
También es necesaria una etiqueta en los FlowItems, cuyo valor será incrementado
justo después de que una etapa del proceso se ha completado. Para poder leer el
contenido correcto de la Tabla existen muchas alternativas, el ejemplo aquí descrito
muestra una alternativa eficiente.
Source
Global Table
Queue
La segunda
instrucción importante
Figura 5.7. Comando dentro del Queue debe
que incrementa una programarse en la pestaña
unidad en la Label Flow. Aquí es donde se
“Etapa” cada vez que indicará la salida de los
un FlowItem entre al distintos productos a las
Queue. diferentes estaciones de
trabajo según corresponda
a su etapa de operaciones.
De la lista de selección de opciones Send To Port elija By Global Table Lookup. Dentro
de la nueva ventana emergente verá tres listas de selección diferentes, en la primera
llamada Table, escoja el nombre de la tabla que usted ya ha diseñado con anterioridad
“TablaDeAsignacion”. En la lista Row elija el comando getitemtype(item) y en la
última lista Column seleccione getlabel(item, "Label"), en este último comando
sustituya el nombre de “label” por el de “Etapa” (ver figura 5.8). Con la instrucción
anterior, logrará que el Queue busque una Tabla Global de nombre
“TablaDeAsignacion” que servirá como referencia para asignar la dirección de los
Capítulo 5. Aplicaciones y Usos Variados. 105
Con esto, el modelo deberá estar funcionando adecuadamente. Sin embargo hay dos
actividades más que debemos resolver.
1. ¿Es posible cambiar todos los FlowItems dentro del modelo a un color común
en función de su etapa de operación?
2. Utilice una agenda de llegadas para poner a prueba las rutas de cada tipo de
producto por separado.
Para revisar el flujo de cada producto por separado (véase figura 5.10.), abra la
ventana de propiedades del Source y en la primer pestaña busque la lista de nombre
Arrival Style, y dentro elija la opción Arrival Sequence. Si así lo desea, personalice el
nombre de los FlowItem con el texto “Producto”. Con esto, cada que ejecute su
modelo verá sólo el flujo de un FlowItem de nombre “Producto” por los diferentes
recursos del sistema.
Figura 5.10.
Programación del
Estilo de Arribos. La
opción es útil para
observar el recorrido
completo de cada
producto por separado
haciendo clic en el
botón cada
que lo desea, y así
garantizar el flujo
adecuado.
Capítulo 5. Aplicaciones y Usos Variados. 107
Ejemplo 5. A un primer almacén llegan piezas que deberán ser enviadas mediante
un operador hasta el segundo almacén donde, de manera automática, pasan a las
diferentes máquinas disponibles. Para que las máquinas funcionen es necesario que
un operador más las opere.
Descripción:
Dentro del Source se tiene programado un total de 20 lotes con 5 piezas para
su disposición (Arrival Sequence).
Las piezas llegan a un primer Queue con capacidad de 5 unidades y necesitan
ser transportadas por un operador al segundo Queue disponible.
Al segundo Queue se le asignará una instrucción para establecer un punto de
reorden. Así, el primer operario podrá reabastecer piezas siempre que la
cantidad contenida en este almacén caiga a uno.
La asignación de las piezas a las diferentes máquinas se hará considerando la
primera máquina disponible.
Las máquinas tienen un tiempo de preparación de 2 segundos y las piezas
deberán ser procesadas cada 20 segundos. Un operador distinto al anterior
deberá estar presente durante el tiempo de preparación de cada máquina.
Después de que una pieza fue procesada, esta saldrá del sistema.
108 SIMULACIÓN CON FLEXSIM
5.4.1. Conceptos
– Los paréntesis hacen una llamada a la función, y las comas separan los argumentos de la
función. Por ejemplo, moveobject(object1, object2);.
– Un enunciado completo (función o comando) siempre debe terminar con un punto y coma
(;).
– Los paréntesis también se pueden utilizar libremente para hacer explicaciones asociadas a
matemática y lógica: Por ejemplo, ((7*x)+1). La cantidad de paréntesis abiertos
y cerrados siempre será la misma. Si usted pone su cursor junto a un
paréntesis abierto, FlexSim lo destacará, mientras que al colocar el cursor al
lado de un paréntesis de cierre se destacará el de apertura.
– Las llaves {} se utilizan para definir un bloque de instrucciones: Los bloques de
instrucciones también definen un ámbito de aplicación y se usan con
instrucciones if, for, y switch.
Capítulo 5. Aplicaciones y Usos Variados. 109
Variables FlexScript
Hay diferentes tipos de variables; cada una determina qué tipo de datos puede
almacenarse, como se lista a continuación:
Antes de que una variable sea utilizada esta debe ser creada o declarada. Una
declaración debe contener tipo y nombre de la variable. Por ejemplo, para declarar
una variable tipo double de nombre “resultado” que contenga el resultado de una
muestra correspondiente a una distribución exponencial, se enuncia en la siguiente
forma:
double resultado;
resultado = exponential(0.0, 15.0, 0);
Comandos FlexScript
FlexScript contiene una amplia variedad de comandos de fácil acceso para referenciar
u obtener información de nodos particulares en la estructura de árbol. Estos son
usados para ejecutar otras funciones, por ejemplo, interactuar con Excel. Algunos
ejemplos son: =, +=, -=, *=, etc.
La estructura de árbol de FlexSim da a los objetos relaciones jerárquicas entre sí. Estas
relaciones permiten hacer referencia a objetos de forma rápida y sencilla utilizando
los comandos y palabras clave.
current: cualquier recurso que posea ese código hará referencia al objeto
presente.
item: da referencia del FlowItem actual, al objeto que solicitó un
Capítulo 5. Aplicaciones y Usos Variados. 111
Así mismo, un nodo de objeto puede hacer referencia a través de una ruta de
acceso y mediante su conexión a otros objetos. Un nodo en cualquier parte del
modelo también puede ser referenciado por su rango dentro del árbol a través de la
función Rank(), que toma el nodo contenedor como primer argumento, y el número
de rango como el segundo. Por ejemplo, para hacer referencia al tercer FlowItems
dentro de un Queue y usarlos en una variable usted deberá expresarse como sigue:
treenode third = rank(current, 3);
Para obtener una referencia del primer subnodo de un árbol se puede utilizar
la función first(), que toma al nodo contenido como el único argumento. La
función last() trabaja de la misma manera, pero devuelve una referencia al último
nodo. La instrucción first(current) en un Queue con lógica de operación Primeras
en Entrar Primeras en Salir (FIFO, por sus siglas en inglés) por defecto se referirá al
FlowItem listo para salir.
Por ejemplo:
Considere una simple simulación donde un Queue esta conectado en serie con un
Processor. Si la lógica de simulación necesita referenciar al Queue1 desde el trigger
correspondiente al Processor3, existen dos maneras para lograrlo:
outobject(current, 1);
112 SIMULACIÓN CON FLEXSIM
o bien
node(“Queue1”, model ());
Los comandos FlexScript proveen rutas directas para obtener información estadística
acerca del modelo, por ejemplo:
Otros comandos como get y set, establecen datos en labels y tablas, estos tienen el
formato siguiente:
Para los datos incluidos como nodos en las variables node de un objeto pueden
utilizarse comandos como:
Concepto 2: Prioridad
Dentro de FlexSim, trate de construir el modelo tal como se muestra en la figura 5.11.
Observe que los Task Executers no tienen conexiones de puerto central, así que no
los conecte aún, sólo conecte a los Recursos Fijos. No olvide asignarles un nombre a
sus ejecutores y recursos, ya que estos serán usados como referencia en la
construcción del modelo.
Programación
En la ventana de
propiedades del Source
(figura 5.12), deberá
programar 20 lotes con 5
piezas cada uno, esta acción
la puede encontrar en el
menú Arrival Style>Arrival
Sequence y al pulsando el
Figura 5.12. botón Refresh Arrivals se
Programación del postraran los cambios.
Source.
Queues
ALMACEN_1
Nota: indique al
operador
transportar tres
piezas a la vez.
Capítulo 5. Aplicaciones y Usos Variados. 115
ALMACEN_2
Nótese que la lista de selección Send To Port ya está configurada por defecto para
asignar las piezas a las diferentes máquinas considerando First available (la primer
máquina disponible), así que no hay necesidad de programar esta instrucción dentro
del recurso. Sin embargo, es aquí donde se solicitará un punto de reabastecimiento a
una pieza; la idea es que siempre que el inventario de este almacén descienda a una
unidad contenida se indique desde aquí al ALMACEN_1 la liberación de piezas que
serán transportadas por el OPERATOR_1.
if (contenido == 1)
{
openoutput(Almacen);
closeoutput(Almacen);
}
Para que operen correctamente las tres máquinas procesadoras del modelo, dentro
de cada una de estas deberá programarse lo siguiente (mientras revisa cada punto
listado abajo, obsérvese la figura 5.14.):
Primero, en esta
Capítulo 5. Aplicaciones y Usos Variados. 117
3. Si se quiere que ciertas tareas tengan prioridad sobre las demás, recuerde que
cada secuencia de tareas tiene un valor de prioridad el cual permite a los
recursos móviles o ejecutores de tareas ordenar la secuencia en la que debe
atenderse una tarea. Así que, para dar por terminada la programación de la
MAQUINA_1, deberá asignarle una prioridad, en este caso coloque el valor
de 1 en la casilla de texto Priority. Con ello, la programación de la
MAQUINA_1 habra concluido. Dé clic Apply, Ok.
5. Recuerde que las prioridades son ordenadas de mayor a menor, así que una
vez que su modelo sea ejecutado verifique que realmente el
OPERADOR_2, le esté dando prioridad a las tareas de la MAQUINA_3.
Para ilustrar esto, observe nuevamente la figura 5.14.
Descripción:
5.5.1. Conceptos
La instrucción Break Task le dice al recurso móvil que compruebe si hay alguna
secuencia de tareas que deba ser interrumpida. Por ejemplo, si dos elementos están
esperando para ser transportados de un punto a otro por un montacargas que tiene
la capacidad de cargar dos o más elementos desde una misma ubicación, entonces el
montacargas tendrá dos tareas secuenciadas por realizar. La primera tarea secuenciada
que esta activada, indica la recolección y entrega del primer elemento, y la segunda
tarea (recolección y entrega del segundo elemento) es colocada en una cola de
secuencias misma que se ejecutará hasta que la tarea activa es concluida. Entonces la
instrucción Break Task, permite al montacargas detener la secuencia de la primera
tarea después de que se haya cargado el primer elemento, y antes de que este elemento
sea transportado de un punto a otro comenzará la secuencia de la segunda tarea, la
cual le indica al montacargas viajar hasta la ubicación del segundo objeto para
tomarlo.
Una secuencia de tareas estándar de un recurso móvil está formada por cinco
diferentes elementos:
Observe la figura 5.15 y trate de construir en una nueva hoja de FlexSim un modelo
muy parecido. Cuando usted arrastre un Rack dentro del área de trabajo, notará que
no tiene el mismo diseño que los mostrados en este modelo, no se preocupe ahora
por ese detalle, pues en la programación del Rack se ajustan sus dimensiones y su
color. Una vez que tenga todos sus recursos, nómbrelos y conéctelos. Observe
nuevamente que el montacargas no está conectado aún, esto lo haremos más tarde.
Programación
Source
Queue
Transporter
mientras están siendo ejecutadas y ser creadas automáticamente. Por ejemplo, cuando
en un recurso fijo se activa la instrucción “Use Transport”, las siguientes tareas son
ejecutadas:
es un apoyo visual.
Travel offsets for load/unload tasks: Esta lista de selección ofrece 3 opciones:
1. Si es elegida la opción "Travel offsets for load/unload tasks", el recurso
móvil se desplazara hasta el punto exacto donde serán recogidos o
entregados los FlowItems.
2. La opción "Do not travel offsets for load/unload tasks", permite viajar
hasta el origen del objeto destino y recoger o dejar allí a los FlowItems.
En caso de que el recurso móvil este usando NetworkNodes para viajar
a su destino, este se detendrá en los nodos de la red y desde ahí tomará
los FlowItems sin llegar necesariamente hasta los recursos fijos.
3. La alternativa "Do not travel offsets and block space on network" es
aplicable sólo cuando el recurso móvil está conectado a una red de
caminos NonPassing (red bloqueada). Si es elegida esta última opción, el
objeto llegará al nodo bloqueado, terminará su recorrido y mientras se
esté haciendo la carga/descarga, el espacio en la red seguirá ocupado y
se bloqueará la admisión de otros objetos que viajan por el mismo
camino.
Rack
Floor Storage: Al ser activada esta casilla el Rack tomará una posición horizontal
y bajará al nivel del suelo.
Mark Shelves that have called a transporter: Cuando esta opción está marcada podrá
ver un cuadro de color rojo debajo de todos los FlowItems que ya hayan
cumplido con su tiempo de permanencia. La opción se ve sólo cuando algún
recurso móvil traslada FlowItems del Rack hacia otro objeto.
Shelf tilt amount: Esta opción permite darle un grado de inclinación a las rejillas
del Rack.
Picking/Placing Y Offset: Esta alternativa es empleada para ubicar la posición
del recurso móvil al llegar al Rack. Entre más grande sea el valor mayor será
la distancia a la que se tomarán o dejarán los FlowItems.
Maximum Content: Muestra el contenido máximo del Rack.
Opacity: Permite ver diferentes transparencias del Rack. Un valor de “0”
Capítulo 5. Aplicaciones y Usos Variados. 125
Figura 5.17.
Ventana de
propiedades del
Rack_1.
126 SIMULACIÓN CON FLEXSIM
Para definir la apariencia del Rack, dé clic en la pestaña Size Table y busque la
manera de indicar sólo 3 bahías y 4 niveles (al finalizar de Aplly Basic Settings),
además especifique 2 metros de ancho por 1 de alto en cada celda. Si desea cambiar
el color del Rack, pase a la pestaña General y dentro de la lista de selección Color elija
el color que más le agrade.
Para concluir, es necesario indicar también a cada uno de los Racks que sólo
pueden almacenar una clase ItemType. Es decir, al Rack_1 le asignaremos los
FlowItems con ItemType 1, en el Rack_2 se almacenarán ItemTypes 2 y al Rack_3
los ItemTypes 3. La instrucción anterior puede programarse dentro de la pestaña
Flow activando el sistema Pull. En la lista de selección Pull Strategy elija By
Expression y tome la opción getitemtype(item), esto indicará la entrada sólo a un
ItemType específico. En la lista siguiente llamada Pull Requirement seleccione
Specific Itemtype y en Type asigne el valor de 1 si se trata del Rack_1, 2 en el Rack_2 y
así sucesivamente.
Actividades extra:
Como usted ya se habrá dado cuenta, los recursos móviles viajan en línea recta entre
su origen y su destino para acortar la distancia, pero si lo desea, es posible indicar por
donde puede o no viajar un recurso móvil. El medio para lograr este fin es a través
del uso de un recurso especial conocido como NetworkNode, que permite crear
caminos o rutas en una red. Un NetworkNode es sólo un nodo en el modelo y un
Capítulo 5. Aplicaciones y Usos Variados. 127
1. Cómo confifurar una red de nodos para indicar la ruta de viaje de un recurso
móvil.
2. Cómo crear trayectorias con curva a través de puntos de control Spline.
3. Cómo identificar la distancia que hay entre un nodo y otro, y sabiendo la
velocidad a la que viaja un recurso móvil podrá definir el tiempo necesario
para recorrer un camino específico, y
4. Sabrá cómo hacer bloqueos de accesos por rutas determinadas para que el
recurso móvil tome rutas alternas.
Descripción:
5.6.1. Conceptos
Para conectar dos NetworkNode entre sí, mientras presiona la tecla “A” haga clic en
el primer nodo (NN1), después arrastre el mouse hasta el segundo nodo (NN2), y
sin dejar de presionar la tecla “A” dé clic en este ultimo (ver figura 5.18). Lo anterior
creará una conexión con una línea negra, observe que a 1/3 y 2/3 de distancia están
dos flechas encontradas. Las flechas verdes indican que un recurso móvil puede
avanzar en ambas direcciones (Passing), el color amarillo señala un camino sin paso
(Non-passing) y el rojo significa que no existe una conexión (No Connection). Entonces,
si las dos flechas son de color verde la conexión se considera como bilateral y si
alguna de las flechas es roja se bloquerá el acceso en algún sentido, por lo que la
conexión será unilateral. Para cambiar estos colores, puede hacer clic derecho sobre
el punto verde y en la ventana emergente seleccione otra opción.
La línea negra que describe la trayectoria por donde se desplazará el recurso móvil
puede ser tanto una recta como una curva. Si es seleccionada la opción “Curved” del
menú desplegable (dando clic secundario sobre la flecha verde), se crearán dos nuevos
puntos de control pertenecientes a un Spline (curva diferenciable definida en
porciones). Al mover estos dos puntos de posición utilizando el mouse, la trayectoria
de la curva será modificada tanto en el eje X como en el Y. Para cambiar la trayectoria
en el eje Z, haga clic en cualquier punto de control Spline y gire el scroll del mouse
hacia arriba y hacia abajo. Véase figura 5.19.
Capítulo 5. Aplicaciones y Usos Variados. 129
Una vez configurada y definida la trayectoria, los recursos móviles podrán Nota: al dar clic
utilizar la ruta trazada. Si desea que esta no sea visible mientras el modelo es ejecutado, presionando la tecla
presione la tecla “X” y dé múltiples clics sobre algún NetworkNode. “X” pero sobre los
puntos Spline el
resultado será un
incremento de
Concepto 3: Tiempo de viaje puntos Spline sobre
la curva.
El tiempo requerido para que un recurso móvil viaje entre dos nodos de la red es
igual a la distancia existente entre los nodos dividida entre la velocidad a la que viaja
el recurso móvil (suponiendo que no hay aceleración o desaceleración). La Current
Distance está dada en términos de unidades de la red y marca la distancia entre dos
nodos elegidos. La figura 5.20 indica que la distancia entre los nodos (NN1 y NN2)
es de 12.03 unidades de la red. Ahora bien, si el recurso móvil se desplaza a una
velocidad de 2 unidades de la red por segundo, entonces el mismo tardará
aproximadamente 6.02 segundos en viajar del nodo número 1 (NN1) al numero
(NN2). Para ajustar las distancias aproxime los nodos tanto como sea necesario.
Una característica especial de los nodos de una red en FlexSim es que puede
ser especificada una Virtual Distance (distancia virtual) entre los nodos de una red.
Por ejemplo, si la distancia virtual desde el NN2 hasta el NN3 es ajustada a 240
(unidades de la red). Entonces el recurso móvil se tomará 120 segundos (2 minutos)
para recorrer la ruta marcada entre estos dos nodos (240 unidades de la red entre 2
unidades de la red por segundo). Si los nodos o la ruta de la red son bidireccionales,
la distancia virtual necesita ser especificada en ambas direcciones, de NN2 al NN3 y
130 SIMULACIÓN CON FLEXSIM
del NN3 al NN2, pero si es unidireccional, sólo deberá especificarse dentro del nodo
que permite el acceso al recurso móvil.
1. Cree tantos NetworkNodes como sean necesarios y conecte cada uno de los
nodos de la red entre sí para crear las rutas necesarias. Recuerde, la conexión
entre nodos se hace presionando la tecla “A” y dando clic en los nodos que
desea conectar.
2. Conecte un NetworkNodes por cada recurso fijo que requiera el servicio de
un recurso móvil. Se puede conectar un recurso fijo a un nodo de la ruta
utilizando la misma combinación: presionado la tecla “A” y dando clic en un
nodo, posteriormente se arrastra el mouse y haga clic sobre el recurso fijo
Capítulo 5. Aplicaciones y Usos Variados. 131
que desea conectar. El resultado de esta conexión es una línea azul, la cual
indica que la conexión fue completada. Es importante señalar que este tipo
de conexión no ocupa ningún puerto en el objeto.
3. Asigne un recuso móvil únicamente a un nodo de la red. La conexión se hace
también pulsando la tecla “A”. Ese nodo se convierte en la ubicación "home"
del recurso móvil. El resultado de esta conexión es una línea roja que tampoco
ocupa algún puerto.
En este modelo, vamos a utilizar un Combiner por primera vez de una forma avanzada.
El Combiner, es un tipo de procesador especializado, cuyos parámetros son muy
parecidos a los de un Processor, de igual manera, el objeto puede llamar a ciertos
operadores durante los tiempos de preparación, proceso o reparación.
132 SIMULACIÓN CON FLEXSIM
1. Cómo manipular la tabla Components List con datos filtrados desde Excel a
través de un Combiner para hacer empaques personalizados sobre la marcha.
2. Cómo importar y utilizar un horario de llegadas dentro del recurso Source.
Descripción:
Actividades extras:
5.7.1. Conceptos
el resto de los puertos de entrada según sea especificado. Cuando se empaca con la
instrucción pack es común usar como base un tipo especial de FlowItems llamado
container flowitem (algunos ejemplos de estos FlowItems especiales son un Pallet o un
Tote). Los FlowItems que son unidos con la instrucción join lo hacen de tal forma
que pierden su individualidad. En caso de activar esta instrucción, los FlowItems que
entran por el puerto de entrada 1 se unirán definitivamente a los FlowItems que
entran por el puerto 2 y cualquier otro puerto superior. Como resultado de la
operación join, los FlowItems que entran por el puerto 2 y superior son destruidos y
sólo podrá ver como salida del Combiner al FlowItem que llegó por el puerto 1, esto
se considera entonces un FlowItem “joined” o unido.
Para empezar, es necesario que tome y coloque los recursos fijos que formarán parte
del modelo tal como se muestra en la figura 5.27. Conecte cada Source con su
respectivo Queue y cada Queue con el recurso Combiner, pero no olvide lo que se
comentó en un inicio respecto a la prioridad para la conexión del Queue que enviará
pallets (FlowItems especiales) y no pase por alto el orden de las conexiones. Hecho
lo anterior, conecte al Conveyor y finalmente al Sink.
134 SIMULACIÓN CON FLEXSIM
Figura 5.23.
Frecuencia de llegadas,
nombre ItemType y
cantidad de órdenes
solicitadas.
Debido a la descripción del modelo son necesarias dos tablas, cada tabla deberá
diseñarse en una hoja diferente pero dentro de un mismo archivo o libro de Excel.
Las figuras 5.22 y 5.23, muestran el formato que deberán tener las hojas en Excel, es
necesario que ambas tablas contengan toda la información mostrada, además, evite
dejar filas vacías entre el encabezado de cada columna y los datos. Nombre a la hoja
que contiene las órdenes de los clientes como Órdenes y a la hoja que contiene la
agenda de la frecuencia de llegadas, el nombre de la orden, el número de ItemType y
la cantidad de órdenes solicitadas, llámela Programación de llegadas. Guarde el archivo
de Excel con el nombre de “Base de datos_Ejemplo 8” en algún lugar donde se pueda
encontrar fácilmente. Recuerde, no haga dos archivos de un libro, use dos hojas (dos
pestañas en la parte inferior de Excel) en un libro.
Capítulo 5. Aplicaciones y Usos Variados. 135
Una vez abierta la ventana podrá ver una línea de importación en la columna
de la izquierda (ImportLine1). Aquí es posible observar el total de líneas de
importación que el usuario desee usar. Por el momento, mantenga destacada la
ImportLine1 para que se sigan mostrando los parámetros de configuración. Usted
puede asignar un nombre a las líneas de importación para personalizarlas si así lo cree
conveniente. Aquí se puede establecer el libro de Excel que se desea importar,
haciendo clic en el botón Examinar ( … ) ubicado al lado derecho de la lista Excel
Workbook. En esta última lista, también notará dos opciones desplegables; "NEW"
abrirá un explorador de archivos mientras la importación comienza permitiendo al
usuario elegir desde qué archivo desea importar y "BLANK" significa que la línea de
importación seleccionada actualmente utiliza el mismo archivo que la línea de
136 SIMULACIÓN CON FLEXSIM
importación directamente sobre esta lista. Por otro lado, en la celda de texto editable
llamada Excel Sheet Name puede especificarse el nombre de la hoja del libro de
trabajo donde los datos residen (para el ejercicio se elige primero la hoja de Excel de
nombre “Programación de llegadas”).
Libro de Excel
importado
Nombre de la hoja
de Excel
Tabla destino para
importación de
datos
Coordenadas de
posición inicial, y
Figura 5.24. Ventana total de filas y
MTEI “Importación columnas
Múltiple de Tablas de
Excel”.
La siguiente lista desplegable Table Type, le permite elegir qué tipo de tabla
usar como destino para los datos importados. Usted puede elegir entre una Global
Table, una tabla que reside dentro de un objeto de origen, o bien puede buscar otra
tabla a través de esta misma la lista de opciones.
Nota: aprovechando que está dentro del objeto Source_Pallet, indique el uso de
Pallets en lugar de Boxes dentro de la lista de selección “FlowItem Class”.
Combiner
tabla nos permite hacer cosas bastante creativas con el Combiner, como hacer
combinaciones dinámicas en la tabla con la intención de empacar una mezcla de
productos diferentes definida por condiciones de alguna orden solicitada.
Para que usted pueda apreciar la imagen que se muestra en la figura 5.26, es
necesario entonces que vincule al Combiner con la Tabla Global que ahora contiene
Nota: los cambios los datos de las órdenes definidas en Excel agregadas a través de la configuración del
en la tabla de importador MTEI. Esto se puede hacer dentro de la pestaña Triggers del Combiner,
nombre al elegir de la lista de selección de opciones OnEntry el comando Update Combiner
Components List, Component List. Aquí dentro sólo es necesario hacer uso de la tabla "GlobalTable1"
se actualizan y posteriormente dar clic en Apply y Ok.
conforme a la tabla
GlobaTable1 al dar
Reset y ejecutar el
modelo.
Figura 5.26.
Programación del
Combiner a partir de
la GlobalTable1,
configurada a través de
la ImportLine2 del
importador de datos
MTEI.
Productos
Dado que los 10 Queues requieren suficientes productos para atender todas las
órdenes solicitadas por los clientes, es necesario que desde el Source1 hasta el
Source10 se tengan un Inter-Arrivaltime de “0”. Dentro de cada uno de estos Sources
deberá indicarse un color diferente para que cada uno muestre un producto de color
Capítulo 5. Aplicaciones y Usos Variados. 139
diferente. Usted puede hacer esto dentro de la pestaña Triggers de cada Source.
No olvide agregar los textos con la ayuda de los recursos visuales de nombre
“Text y Bilboard”. El resto de los recursos no requieren modificaciones, así que con
esto hemos terminado la programación del modelo.
Figura 5.27.
Presentación del modelo
final.
Descripción:
cajas del pallet que las contiene a una velocidad constante de 15 segundos por
paquete.
Los dos separadores paran cada 15 minutos exponencialmente distribuidos y
un operario tarda entre 1 y 2 minutos uniformemente distribuidos en
arreglarlos:
o Up Time para la frecuencia de falla exponential(0, minutes(15), 1)
o Down Time para la reparación uniform(minutes(1), minutes(2), 1)
5.8.1. Conceptos
Concepto 1: Separator
1. Members: En esta primer ficha usted puede añadir en una lista de miembros
todos los recursos a los cuales desea aplicarles la programación de la herramienta
MTBF/MTTR. Haga clic en el botón add object(s) para añadir objetos y seleccionar
a los miembros del panel derecho. Si desea eliminarlos de la lista, seleccione el
objeto y haga clic en el botón remove.
2. Functions: En esta ficha es posible especificar el tiempo en que un recurso
suspenderá o reanudara sus operaciones cotidianas, a través de comandos
triggers.
- First Failure Time: Esta lista de selección devuelve la hora del primer fracaso
o falla.
- Up Time: Esta lista de selección devuelve el Mean Time Between Failure, MTBF
(Tiempo Medio Entre Fallas) de los objetos. La función determina el tiempo
que esos objetos se ejecutarán antes de entrar en un estado descompuesto.
- Down Time: Esta lista de selección devuelve el Mean Time To Repair, MTTR
(Tiempo Medio de Reparación) de los objetos controlados por esta
herramienta. La función determina cuánto tiempo el recurso permanecerá en
un estado descompuesto antes de reanudar sus operaciones normales.
- Down Function: Esta lista desplegable se ejecuta cuando los objetos o recursos
de la lista de miembros entran en estado de falla o descompostura. Se ejecuta
una vez para cada objeto contenido en la lista de miembros. Es en esta
función donde se especifica qué hacer para detener el objeto. Por ejemplo,
se puede indicar la necesidad de llamar a una persona para que brinde
mantenimiento a los equipos a través de una conexión central.
- Resume Function: La lista de opciones se ejecuta cuando los objetos de la lista
de miembros reanudan su operación. Se ejecuta una vez para cada objeto de
la lista de miembros. Aquí es donde se especifica qué hacer para reanudar la
operación del objeto.
Capítulo 5. Aplicaciones y Usos Variados. 143
- On Break Down: Esta lista de selección se activa al mismo tiempo que la Down
Function, pero sólo es ejecutada una vez, en lugar de una vez para cada
objeto de la lista de miembros.
- On Repair: Esta lista de selección se activa al mismo tiempo que la Resume
Function, pero sólo se ejecuta una vez, en lugar de una vez para cada objeto
en la lista de miembros.
Seguramente usted puede resolver este ejercicio sin problema, para estar más seguros
y no cometer errores puede echar un vistazo a las siguientes figuras (5.28 y 5.29):
Figura 5.29.
Presentación del
modelo final.
6 CAPÍTULO 6. Un Modelo de
Fluidos
ESQUEMA DEL CAPÍTULO
OBJETIVOS DE APRENDIZAJE
Ejemplo 10. Una planta productora de lácteos elabora un postre llamado DasaFrut
en algunas de sus líneas de producción. La preparación del postre requiere de dos
ingredientes: por un lado utiliza leche pasteurizada contenida en cubetas de 25 litros
cada una y por otro lado, toma el preparado de fruta ya estabilizada en cubetas de 5
litros. La leche pasteurizada es tomada del Almacen1 y enviada hasta el Tanque
FluidTank1. Para realizar dicho envío, es necesario que un operario tome las cubetas
del Almacen1 y las lleve hasta un ItemToFluid1 para que la leche sea vertida a través
de una tubería al Tanque FluidTank1. El preparado de fruta estabilizada es enviado
hacia un segundo Tanque FluidTank2, donde otro operario toma las cubetas del
Almacen2 y las lleva hasta un segundo ItemToFluid2 para que la fruta sea depositada
a través de una tubería al Tanque FluidTank2. Una vez contenidos los ingredientes
en ambos tanques respectivamente, la leche y la fruta se conduce hacia el área de
mezclado por tuberías en proporciones variadas. Después de que el producto es
Capítulo 6. Un Modelo de Fluidos 147
Para poder iniciar con la construcción del modelo es necesario entender algunos
términos interesantes del módulo de fluidos del software FlexSim ya que son
necesarios para el desarrollo del modelo:
Para la construcción del modelo se inicia creando una nueva hoja de trabajo (New
Model) en FlexSim. Posteriormente, se eligen de las bibliotecas Discrete o Fluid
Objects los recursos necesarios y se arrastran al área de trabajo (véase figura 6.2). Los
objetos necesarios para este caso de estudio son:
Nota: si usted está trabajando con una versión de prueba previa a la 16.1.2 podrá darse
cuenta que no hay ningún problema con la cantidad de objetos y conexiones que se hagan
entre estos. Sin embargo, dadas las características del nuevo Conveyor en la versión más
reciente, cada segmento de la banda transportadora que alimenta de botellas vacías al
sistema se cuenta como un objeto individual por lo que al intentar conectar el total de los
objetos se producirá un error el cual indicará que se ha rebasado el límite de objetos
permitidos (Model size limit was reached). Para corregir lo anterior y poder concluir con éxito
su modelo será recomendable usar sólo un segmento para representar la banda
transportadora y quizá eliminar algún otro objeto que no afecte drásticamente la
operación de su modelo, o bien atener las observaciones de la segunda nota en la pagína
160.
Lo anterior se repite con una línea de conexiones paralela pero desde el Almacen2
al FluidMixer.
Nota: no se
El Almacen1 y el Almacen2 llaman a un operador distinto para transportar los
preocupe ahora por
FlowItems hasta el ItemToFluid, por lo que los Operators deberán tener una
la estética de su
conexión de puerto central tanto del Almacen1 como del Almacen2, respectivamente
modelo, ya que
(véase la figura 6.2).
cada objeto tomará
forma mientras se
avanza en la
programación del
mismo.
Configuración de los Sources (ver figura 6.3). Dado que el valor predeterminado del
tiempo de llegada del Almacen1 y del Almacen2 es funcional para este modelo, debe
dejarse tal y como está. Únicamente se indica a cada uno de los dos Sources, la
instrucción que permite llamar a cada Operator según corresponda para que se lleve
Nota: si desea los FlowItems creados hasta los dos objetos ItemToFluids (Use Transport de la pestaña
cambiar el color de Flow). Respecto al Almacen3 sólo es necesario escoger de la lista de selección de
los FlowItems opciones FlowItem Class la alternativa Cylinder para representar a los frascos.
puede usar el Finalmente en este mismo Source se debe configurar el campo Inter-Arrivaltime a
comando Set Object 1.5 segundos.
Color de la opción
OnExit de la
pestaña Triggers.
Capítulo 6. Un Modelo de Fluidos 153
Repetir estos pasos para el resto de los objetos mencionados anteriormente. Los
objetos de una línea de procesamiento deberán ser de color blanco (línea leche) y los
de la otra línea de color verde (línea fruta).
Figura 6.6.
Configuración del
FluidPipe1.
respectivas instrucciones.
Figura 6.7.
Configuración de las
operaciones Mark del
tanque FluidTank1.
procesa. En este modelo, es necesario programar dos pasos dentro de la tabla Mixer
Steps. El mezclador deberá jalar 10 litros del primer material (leche pasteurizada) por
el puerto de entrada 1 durante el Paso 1. Después, se deberán jalar 3 litros del segundo
material (preparado de fruta) desde el puerto de entrada 2 durante el paso 2.
Dentro de
LechePasteurizada, ajuste
el Port a 1, Amount a 10,
y Step a 1.
Figura 6.8. Dentro de
Configuración de la PreparadoDeFruta, ajuste
entrada y mezcla de
ingredientes dentro del el Port a 2, Amount a 3, y
FluidMixer. Step a 2.
Con estos simples cambios, podrá observarse como el objeto mezclador jala
primero 10 litros leche pasteurizada por el puerto de entrada 1 durante el Paso 1 y
después, toma 3 litros de preparado de fruta desde el puerto de entrada 2 durante el
paso 2 para lograr la mezcla deseada.
Capítulo 6. Un Modelo de Fluidos 159
Unit y asigne un valor de 0.5 para indicar que por cada medio litro de material
fluido se deberá crear un FlowItem o porción de Postre.
Figura 6.10.
Configuración del
objeto
FluidToItem para crear
el FlowItem “Postre”.
Figura 6.11.
Presentación del modelo
final.
Comentarios finales.
Actividades: Ejecute el modelo por un turno de 8 horas o 480 minutos y al final cree
un informe completo con la herramienta Reports and Statistics. Observe en las
estadísticas colectadas cual fue el desempeño de los recursos, indique donde se
crearon cuellos de botella y explique porqué, determine además el tiempo promedio
que cada producto permaneció en el sistema y finalmente cuente el número de piezas
que fueron enviadas tanto al almacén de clientes como al cesto de basura.
Actividades: Simule cuatro escenarios diferentes con un tiempo de 2,400 minutos cada
uno. Las medidas de desempeño de interés son los diferentes estados (idle,
processing, busy, blocked, etc.) de cada centro de maquinado y del operario, la
cantidad de artículos procesados y el tiempo total que un artículo pasa en el sistema.
5. Una línea de producción automática contiene seis estaciones de trabajo, estas son
antecedidas por un Queue para representar una fila de espera si fuese necesario. Los
tiempos de cada estación de trabajo están en segundos y son constantes: 20, 20, 22,
22, 24, 14. Los arribos de las piezas al sistema corresponden a una exponential(0, 18,
0); igualmente en segundos. Se asume que la transferencia de piezas en todas las
estaciones de trabajo es despreciable o de tiempo cero con excepción de las piezas
movidas por el operario. Después de haber concluido la tarea de la estación 2 la pieza
es valorada, si la misma esta defectuosa se almacenará en un contenedor hasta que
un operario la tome y la transporte a la primera posición de la fila de espera de la
estación 1 para ser atendida inmediatamente. Esta valoración es aplicable para las
estaciones 2, 3, 4, 5, 6 y en todos los casos la pieza defectuosa regresará a través de
un operario hasta la estación 1. En todos los Queues la atención de una pieza
defectuosa es inmediata. La probabilidad será la misma en cada una de las cinco
estaciones de trabajo y ésta misma no cambiará a pesar de que la parte sea regresada
muchas veces.
Actividades: Simule el modelo por 1,000 minutos, y observe los tiempos mínimos,
máximos y promedios de los clientes desde que entran al sistema hasta que lo
abandonan, el tiempo promedio de espera en la fila y la cantidad mínima, máxima y
promedio de los clientes que esperan a ser atendidos. Diseñe un escenario alterno
donde las órdenes de los clientes sean asignadas a los cocineros de acuerdo con el
primero que esté disponible, ejecútelo por el mismo tiempo y compare los resultados
de ambos modelos.
o Después de haber sido empacado cada uno de los tres distintos productos, en
esta misma etapa del proceso es necesario identificarlos nuevamente. Así pues, al
Producto1 le colocaremos el número de ItemType 5, al dos el 6 y al tres el 7.
Posteriormente cada producto abandona las empacadoras y es enviado hasta una
sola máquina acondicionadora a través de bandas transportadoras.
o Máquina Acondicionadora. Este equipo trata a los productos de manera distinta
y por tanto sus tiempos de operación cambian dependiendo del producto a
procesar: el Producto1 requiere de 30 segundos, el Producto2 (70 segundos) y el
Compendio de Problemas. 169
Producto3 (42 segundos). Para lograr esto, se requiere del diseño de una Tabla
Global y del uso de la instrucción By Global Table Lookup, dicha instrucción se
puede activar en el módulo Processor contenido en la ventana de propiedades de
este objeto. Concluido lo anterior, el producto abandona el sistema.
9. Las piezas arriban a un sistema compuesto por tres equipos a una velocidad media
de 10 minutos distribuidos exponencialmente. A su llegada, las piezas se introducen
al primer equipo. La operación en este primer equipo corresponde a una distribución
triangular(2.5, 4.2, 7, 0) en minutos. Posteriormente, las piezas pasan a un segundo
equipo con un tiempo de operación triangular(1, 4, 8, 0) igualmente en minutos.
Inmediatamente después, las piezas se dirigen al tercer equipo donde son pintadas
de color amarillo a una velocidad triangular(3, 5.5, 2, 0) minutos. Las piezas ya
pintadas, regresan nuevamente al primer equipo para ser procesadas por segunda
ocasión. Sin embargo, las piezas que entran por segunda ocasión a este primer equipo
son distinguidas con un tiempo de operación diferente que corresponde a una
triangular (1.5, 5.4, 4.5, 0) minutos. Por lo tanto, el primer equipo está configurado
para recibir piezas con probabilidades específicas (el 70% de las entradas son piezas
nuevas y el resto piezas procesadas por segunda ocasión). Una vez completadas las
operaciones, las piezas abandonan el sistema. Nota: todos los envíos de piezas entre
equipos se hacen a través de bandas transportadoras.
El lector notará que en cada problema planteado dentro de los capítulos de este
documento se describen características distintas del software, las cuales se analizarán mientras
se avanza en los diferentes apartados, al final se detalla un caso complementario de un
modelo de fluidos y se agregan ejercicios que no sólo buscan recordar lo aprendido sino que,
involucran al diseñador hacia la construcción, análisis e interpretación de resultados para dar
respuesta a nuevos problemas. Además, se muestra la sencillez al programar y lo elegante
que luce la animación 3D. Al mismo tiempo, el estudiante comprobará que la simulación
de eventos discretos o de cambio continuo-discreto desarrollada con FlexSim, permite aportar
valor agregado a sistemas industriales y de servicios quienes buscan mejorar su rentabilidad
con amplia precisión y capacidad.