Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un Primer Paso A La Simulacion Con Flexsim - I. Simón Marmolejo
Un Primer Paso A La Simulacion Con Flexsim - I. Simón Marmolejo
simulación con
I. Simón-Marmolejo
M. Ortiz-Domínguez
M. Ortiz-Domínguez
Versión Gratuita
© FlexSim Iberia
Director del proyecto editorial: COPYRIGHT © 2019
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/
Equipo revisor:
Dr. Joselito Medina Marín
Dra. Francisca Santan Robles
Ing. Daniel Robles Carrasco
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.
ii
iii
iv
Al finalizar la revisión del presente documento, 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 dinámica de fluidos.
vi
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 de la guía User
Manual la 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/,
y si lo require póngase en contacto con los responsables del sistema.
2019
Isaías Simón Marmolejo
vii
A mis hijos Yohan Simón y Hakim Simón que atraviesan sus tremendos
siete y dos años, respectivamente, 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 que ha sido parte
fundamental de mi pequeña familia.
A mis padres Mario Simón y Cristina Marmolejo con quienes tengo una
deuda de enorme gratitud por siempre creer en mí.
2019
Isaías Simón Marmolejo
viii
OBJETIVOS DE APRENDIZAJE
NOTA:
La fuente del total de las figuras ilustrativas aquí mostradas fuerón tomadas del
software FlexSim versión 19.2.4, propiedad de la empresa FlexSim Software Products,
Inc.
Por otro lado, Kelton et al., 2008, menciona que la simulación por
computadora se refiere a los métodos para estudiar una gran variedad de
modelos de sistemas del mundo real mediante la evolución numérica, usando un
software diseñado para imitar las operaciones o características del sistema, a
menudo en el transcurso del tiempo. La evolución y tendencias al tema se dan en
el siguiente apartado.
Figura 1.2. Alternativas bajo las cuales se puede experimentar con un sistema.
Todo ello si el sistema existe, pero ¿qué pasa cuando el sistema no existe
o resulta complicado e incluso peligroso manipular sus elementos? La
experimentación con un modelo del sistema implica el modelado de una solución
mental, verbal, física o matemática la cual es resultado de la abstracción de las
las acciones de duración con una diferencia de tiempo entre el evento que marca
el principio del punto X y el evento extremo final del punto Y. Por ejemplo,
observe la figura 1.3:
Dado que todos los cambios de estado ocurren en eventos de tiempo para
un modelo de simulación de eventos discretos, los períodos de inactividad son
ignorados por saltos en el reloj de un evento de tiempo a otro. Un modelo con
avance de tiempo con incremento fijo no “salta” estos periodos inactivos, los
cuales tienden a la utilización más prolongada del computador. Cabe señalar que
los saltos sucesivos del reloj de simulación son generalmente variables (o
desiguales) de tamaño, de ahí el nombre de mecanismo de tiempo variable.
Notación:
𝑨𝒊 = 𝑡𝑖 - 𝑡𝑖−1 = periodo de tiempo entre llegadas de un cliente y otro
𝑺𝑡𝑖𝒊 =
= de llegada
tiempo que tarda eldeli-esimo
i-esimocliente
clienteal (𝑡 = 0) por un servidor
ser0 atendido
𝑫𝑖 = tiempo que espera el i-esimo cliente en la cola antes de ser atendido
𝑪𝒊 = 𝑡𝑖 + 𝐷𝑖 + 𝑆𝑖 = tiempo en que el i-esimo cliente completa el
servicio y abandona el sistema
Figura 1.4. Mecanismo de eventos y avance del tiempo (la figura ilustra el enfoque
del tiempo de un sistema de colas con un sólo servidor).
Figura 1.5. Guía del conjunto de etapas definidas para alcanzar conocimientos
válidos en un proyecto de simulación.
Para tener una idea de la lógica o comportamiento general del sistema y sus
operaciones, no es necesaria una copia paso a paso, entre el modelo y el sistema
real, sólo es necesaria la esencia de este último. En esta etapa deben definirse qué
aspectos del sistema serán representados en el modelo y cuáles no. Además, se
deberá establecer con qué nivel de detalle se hará dicha representación (recuerde
que el nivel de detalle depende en gran medida de lo que el dueño del sistema esté
dispuesto a pagar). Todo lo que se desea en este punto es ingeniar un bosquejo o
modelo conceptual del sistema (diagramas de flujo, de hilos, correlación o de
actividades serán necesarios).
Los objetivos del estudio establecen, en gran medida, la clase de datos que deben
ser obtenidos y cuántos detalles son adecuados a fin de no perder información
valiosa. Los datos pueden ser obtenidos de observaciones de un sistema ya
existente. En el caso de un sistema inexistente, los datos deben ser estimados. En
esta etapa es vital, para ambos casos, que se involucren las personas que en verdad
saben lo qué está pasando en el sistema real (operadores, supervisores,
inspectores, todos aquellos que conocen a detalle el sistema). Un ejemplo de
algunos datos que deben obtenerse son las condiciones y parámetros del proceso
de producción, personal que labora y las acciones que realizan, materiales o
materias primas utilizadas, maquinaria o equipos, esquemas, planos,
procedimientos y, si es factible, datos históricos, fotos y videos. Todo esto con el
fin de despejar cualquier duda, por muy simple o lógica que esta sea. Mediante
estos datos se obtendrán los valores de los parámetros estadísticos (definición de
variables respecto a una distribución de probabilidad) que serán utilizados durante
la programación del modelo de simulación (más detalles se dan en los Capítulos
2 y 3).
Es muy importante entender qué métricas se usarán. En este sentido, Banks et al.
(2009) contextualiza que “la construcción de un modelo de simulación es tanto
un arte como una ciencia”. Sin embargo, la experiencia dicta que, para dar una
solución concreta al problema en cuestión, es necesario un buen aporte de
creatividad por parte del analista. En este punto el objetivo es ganar conocimiento
acerca de la naturaleza del sistema, así como proyectar situaciones alternas
desprendidas por causa de un desencadenamiento de eventos distintos a las
condiciones normales de operación. Con el propósito de pronosticar eventos,
evaluar consecuencias y proponer alternativas que contribuyan a mejorar el
comportamiento de éste. Es aquí donde los términos información, análisis, critica,
diseño y creatividad se integran para dar forma a la estructura del modelo. El
lector observará que esta etapa requiere de conocimiento, habilidades y
experiencia personal; sin embargo, este paso es el más divertido de todo el estudio.
6) Verificación
7) Validación
8) Diseño de experimentos
Documentación
Por último, no olvide que los resultados del trabajo deben ser redactados en forma
clara y concisa en un reporte final. Esto tiene el propósito de describir todos los
aspectos importantes del estudio, por este motivo la documentación del proyecto
tendrá que ser una tarea continua durante toda la construcción del modelo de
simulación, esto incluye desde la formulación del problema, objetivos,
consideraciones para elaborar el modelo conceptual y su transformación en el
modelo computacional, criterios utilizados, resultados de los experimentos,
recomendaciones establecidas, conclusiones, hasta las observaciones derivadas de
su implantación. Es importante señalar las recomendaciones claras y sustentables
de lo que el modelador cree oportuno, esto incluye tanto los detalles del análisis
como una presentación, así mismo se recomienda entregar un manual de usuario
para que el cliente o dueño del sistema tenga una mayor facilidad al momento de
dar uso al modelo de simulación concluido.
1.7.1. Ventajas
1.7.2. Deventajas
Preguntas
Actividades
2.1. INTRODUCCIÓN
2.2. TAMAÑO DE LA MUESTRA
2.2.1. Estimación Preliminar de Variables
2.2.2. Cálculo del Número de Observaciones
2.2.3. Frecuencia de Visitas al Centro de Trabajo para Realizar
Observaciones y Tipo de Muestreo
2.3. DISTRIBUCIÓN DE PROBABILIDAD
2.3.1 Experimento y Espacio Muestral
2.3.2 Variable Aleatoria
2.3.3 Tipos de Distribuciones
Distribución discreta
Distribución continua
2.4. ACTIVIDADES COMPLEMENTARIAS
OBJETIVO DE APRENDIZAJE
2.1. INTRODUCCIÓN
Por otro lado, los errores más comunes en la selección de una muestra se
cometen al tomar la información que está más a la mano, la que se toma sin
determinar un tamaño adecuado de la misma o la que se emplea sólo con el hecho
de hacer un juicio subjetivo de la población. Estas técnicas podrían introducir
sesgo en la muestra y como consecuencia el parámetro de interés se sobreestimará
considerablemente al utilizarla, pues estos mismos datos que son observaciones
del sistema real se sujetarán a una distribución que servirá como una entrada en
el modelo de simulación (Montgomery y Runger, 2009, p. 262). Entonces, si el
modelo es alimentado con datos incorrectos, los datos resultantes que también
son estadísticos en el modelo de simulación podrían tener sesgo, y ocurrirá lo que
coloquialmente se dice; “si un sistema se alimenta con basura, producirá basura”.
Para contribuir al tema, he aquí los pasos para un estudio de muestreo:
1) Hacer una estimación preliminar de las variables para las que se busca
información.
2) Calcular el número de observaciones que se tomarán.
3) Determinar la frecuencia de las observaciones en el centro de trabajo y el
tipo de muestreo.
En Niebel y Freivalds (2009), se indica que la teoría del muestreo se basa en leyes
fundamentales de probabilidad; donde en un instante dado, un evento puede estar
presente o ausente. Al intentar determinar el número de observaciones 𝑛 que se
deben tomar en un estudio de muestreo, con mucha frecuencia, el analista
desconoce la probabilidad de ocurrencia 𝑝, sin embargo, la mejor estimación de
𝑝 es 𝑝̂ (proporción basada de la muestra). Se espera que el valor de 𝑝̂ de cualquier
muestra tomada este aproximadamente el 95% de las veces dentro del intervalo
del parámetro 𝑝 ± 1.96 desviaciones estándar.
𝑝̂ = ∑ 𝑥𝑖 ⁄𝑁 (1)
𝑖=1
Donde
Método Estadístico
(𝑍𝛼⁄2 )2 𝑝𝑞
𝑛 = (3)
ℓ2
Donde
𝒑 = probabilidad de ocurrencia,
𝒒 = 𝟏 − 𝒑 = probabilidad de una ausencia de ocurrencia,
𝒏 = número total de observaciones,
𝒁𝜶⁄𝟐 = valor de tablas de la distribución normal con 𝛼 grados
de libertad, y
𝓵 = Error admitido.
Figura 2.2. Rango de tolerancia del porcentaje de holgura en los sobres determinados
como defectuosos.
(𝑍𝛼⁄2 )2 𝑝𝑞
𝑛 =
ℓ2
(2.054)2 (0.15)(0.85)
𝑛= = 5,379 observaciones
(0.01)2
ℓ = 𝑍𝛼⁄2 √𝑝𝑞/𝑛
(0.15)(0.85)
ℓ = 2.054 √ = 0.0232 = 2.3%
1,000
Donde
𝒑= probabilidad de ocurrencia,
𝒎= número de muestras correlacionadas,
𝒏= número total de observaciones,
𝒏(𝒋) = número total de espacios a ocupar, maquinas a revisar,
número de trabajadores o cualquier otro factor de
interés en la 𝑗-ésima observación, y
𝒚(𝒋) = número de espacios desocupados, maquinas
descompuestas, trabajadores “inactivos” o cualquier
otro factor de interés en la 𝑗-ésima observación.
Bajo los supuestos anteriores, el gerente del Banco puede concluir que 9
± 3.65% de los asientos estarán disponibles en cualquier instante en el que un
cliente llegue al Banco (esto es entre 3 y 6 asientos disponibles aproximadamente).
Esto permite suponer que si el Banco sigue funcionando bajo estas condiciones
no tendrá problemas con sus clientes, pues frecuentemente encontrarán lugares
disponibles donde esperar antes de ser atendidos. Es importante hacer notar que,
aunque el sistema tiene espacios disponibles a cualquier instante del día, no se
descarta la posibilidad de que en algún momento algún cliente tenga que esperar
de pie porque todos los asientos están ocupados.
𝑁𝑇 𝑍𝛼⁄2 2 𝑝𝑞
𝑛= (5)
ℓ 2 (𝑁𝑇 − 1) + 𝑍𝛼⁄2 2 𝑝𝑞
Donde
1) Método Tradicional
dispersión de las lecturas individuales, bajo este criterio, el número de ciclos que
deberá observase para obtener un tiempo medio representativo de una operación
también se determina mediante los procedimientos sujeridos en García (2005):
1. Tabla Westinghouse
2. Criterio de la General Electric Co.
Westinghouse
1.000 5 3 2
0.800 6 3 2
0.500 8 4 3
0.300 10 5 4
0.200 12 6 5
0.120 15 8 6
0.080 20 10 8
0.050 25 12 10
0.035 30 15 12
0.020 40 20 15
0.012 50 25 20
0.008 60 30 25
0.005 80 40 30
0.003 100 50 40
0.002 120 60 50
Menos de 0.002 140 60 60
Recomendaciones
No toda la información que se pueda obtener será de ayuda para el análisis de los
datos; está información deberá ser oportuna, confiable y relevante. Niebel y
Freivalds (2009), puntualizan que al realizar la recolección de datos se deben
tomar en cuenta que:
S = {A, B} (6)
S = {1, 2, 3, 4, 5, 6}
(i, j)
Aquí (i, j) toman el valor de la cara superior del dado uno y dos,
respectivamente. Si X es una variable aleatoria correspondiente a la suma de los
dos dados, X toma el valor de 7 para el resultado (4, 3). En general se denota una
variable aleatoria por la letra mayúscula X, Y, Z y los valores que las variables
aleatorias toman se denotan con las literales x, y, z. Dadas las condiciones
anteriores, si existe un espacio muestral discreto y uno continuo, también existen
variables aleatorias discretas y continuas, los temas siguientes dan argumentos de
ambos casos.
Una variable 𝑋 se dice ser discreta si puede tomar más de un número contable de
Función de Probabilidad
La probabilidad de que una variable discreta 𝑋 tome el valor 𝑥 esta dado por:
𝑓 (𝑥) = 𝑃( 𝑋 = 𝑥 )
1.- 𝑓 (𝑥) ≥ 0,
2.- ∑ 𝑓(𝑥) = 1,
𝑥
3.- 𝑃( 𝑋 = 𝑥 ) = 𝑓 (𝑥)
f (x) 0.6
0.5
0.4
0.3
0.2
0.1
0
0 1 2
1.2
f (x)
1
0.8
0.6
0.4
0.2
0
0 1 2 3
Una variable aleatoria se dice ser continúa cuando ésta toma un número infinito
de valores diferentes no negativos. Considérese una variable aleatoria cuyos
valores son los pesos de toda la gente mayor de 21 años. Entre dos valores
cualquiera que sea, digamos 58.647 y 60.193 kilogramos, hay un número infinito
de pesos, uno de las cuales es 60 kilogramos. Una variable aleatoria continúa tiene
una probabilidad cero de tomar exactamente cualquiera de sus valores, a ello, las
variables continuas tienen función de densidad (𝑓 (𝑥)) y función de distribución
acumulada (𝐹(𝑥)).
Función de Densidad
a) b) c) d)
Fuente: Elaboración propia con base en Walpole et al., 2012.
𝑏
𝑃(𝑎 < 𝑋 < 𝑏) = ∫ 𝑓(𝑥)𝑑𝑥
𝑎
f (x)
x
a b
Figura 2.6. Función de densidad de probabilidad para 𝑃(𝑎 < 𝑋 < 𝑏).
∞
3.-
𝑃(𝑎 < 𝑋 < 𝑏) = ∫ 𝑓(𝑥) 𝑑𝑥
−∞
𝑥
𝐹(𝑥) = 𝑃(𝑋 ≤ 𝑥) = ∫−∞ 𝑓(𝑡) 𝑑𝑡, para −∞ < 𝑥 < ∞
𝑑𝐹(𝑥)
𝑃(𝑎 < 𝑋 < 𝑏) = 𝐹(𝑏) − 𝐹(𝑎), y 𝑓(𝑥) =
𝑑𝑥
f (x)
1.0
0.5
x
-1 0 1 2
Distribución Discreta
Se utiliza para modelar una ocurrencia aleatoria que tiene dos posibles resultados como
una prueba de pasa/no pasa o éxito/fracaso. Es posible generar más de dos valores de
anidación de comandos de Bernoulli, sin embargo, es mejor utilizar distribuciones
empíricas en estos casos.
1−p si x = 0
Función de probabilidad p(x) = { p si x = 1
0 en cualquier otro caso
Parámetros p ∈ (0, 1)
Rango {0, 1}
Media P
Varianza p(1 − p)
1
0 si p < 2
1
Moda 0 y 1 si p = 2
1
1 si p > 2
{
Comentarios:
1. Una variable aleatoria 𝑋 con distribución de probabilidad Bernoulli (𝑝) se
puede considerar como el resultado de un experimento de "éxito" o "falla".
Si la probabilidad de existo es 𝑝, dejemos que sea 𝑋 = 0 si el experimento
falla y 𝑋 = 1 si el experimento es exitoso, entonces 𝑋~ Bernoulli (𝑝).
Bernoulli
p(x)
1-p
x
0 1
Bernoulli en FlexSim
Distribución Continua
𝑥 − 𝑎 𝑎1−1 𝑏 − 𝑥 𝑎2−1
[ ] [ ]
𝑏−𝑎 𝑏−𝑎 𝑠𝑖 𝑎 < 𝑥 < 𝑏
f(x) = {
(𝑏 − 𝑎)𝐵(𝑎1 , 𝑎2 )
0 en cualquier otro caso
Rango (a, b)
Media 𝛼1
𝑎 + (𝑏 − 𝑎 )
𝛼1 + 𝛼2
Varianza 𝑎1 𝑎2
(𝑏 − 𝑎 )2 2
(𝑎1 𝑎2 ) (𝑎1 + 𝑎2 + 1 )
α1 − 1
a + (b − a) si α1 > 1, α2 > 1
α1 + α2 − 2
a y b si α1 < 1, α2 < 1
Moda a si (α1 < 1, α2 ≥ 1) or (α1 = 1, α2 > 1)
b si (α1 ≥ 1, α2 < 1) or (α1 > 1, α2 = 1)
unicamente no existe si α1 = α2 = 1
{
Comentarios:
∞ si 𝛼1 < 1
7. 𝑙𝑖𝑚𝑥→0 𝑓 (𝑥 ) = {𝛼2 si 𝛼1 = 1
0 si 𝛼1 > 1
∞ si 𝛼2 < 1
𝑙𝑖𝑚𝑥→1 𝑓(𝑥 ) = { 𝛼2 si 𝛼2 = 1
0 si 𝛼2 > 1
1
8. La densidad es simétrica 𝑥 = 2 si y solo si 𝛼1 = 𝛼2 . también la media y la moda son
iguales si y solo si 𝛼1 = 𝛼2 .
Beta
Beta en FlexSim
Selección de
distribución estadística.
Definición de
parámetros.
El gráfico muestra
visualmente la
probabilidad de que
esta distribución
matemática genere
ciertos valores (en el
ejemplo, entre 5 y 15).
Figura 2.8. Ejemplo de una distribución
uniforme en FlexSim.
Preguntas
Actividades
OBJETIVOS DE APRENDIZAJE
NOTAS:
Los apartados 3.2, 3.3 y 3.4 son un resumen de los términos dados en el manual de
ayuda de ExpertFit proporcionado por Law A. M. y Averill M. Law & Associates, Inc.
(1995-2011), complementados con un ejemplo claro que guía al lector hacia el mejor
uso del software. Por otro lado, las figuras mostradas son impresiones del software
ExpertFit versión 8.01, propiedad de la empresa Averill M. Law & Associates. Inc.
(2011-2019).
a) Recolectar datos del sistema real de interés. Esto a menudo requiere tiempo
sustancial y compromiso de recursos. Desafortunadamente, en algunas
situaciones no es posible recolectar los datos (por ejemplo, cuando el tiempo
es extremadamente limitado, cuando el proceso de entrada aún no existe, o
cuando las leyes o reglas prohíben la recolección de datos). Cuando los datos
no están disponibles, la opinión de expertos y conocimiento del proceso
debe ser usado para realizar estimaciones aproximadas.
http://www.averill-law.com/distribution-fitting/
Ventana 2.
Ventana 1.
Antes de iniciar un proyecto dentro del módulo Data Analysis considere las
siguientes recomendaciones.
Paso 1. Data
Cada una de las opciones anteriores admite situaciones variadas, las cuales
se describen como sigue:
Read Data from File, admite la lectura de datos desde un archivo externo.
Caso de estudio:
Ejemplo 3.1. Los datos de la tabla 3.1, representan el tiempo entre las llegadas de
clientes en una central de autobuses de la ciudad de Pachuca Hidalgo, México.
1.2612 1.3352 0.7624 0.6891 0.9117 2.0866 0.1030 0.0235 0.0217 0.4330
3.0628 0.3043 0.0688 1.1471 0.3381 0.9148 0.5979 0.5819 0.1166 0.3529
0.9140 0.7904 0.4831 1.5379 0.4093 1.9359 0.6797 0.6029 0.3983 1.7758
0.4271 4.6666 0.0138 0.1239 0.0422 0.5146 0.3471 0.6811 1.3994 0.6210
0.8327 0.4165 0.0012 0.4262 2.1210 0.7529 0.7172 0.0804 1.2710 0.2072
0.3606 1.3682 1.4619 0.2013 1.5348 0.0440 0.2699 2.4408 0.8494 0.4980
0.5505 0.2020 0.0777 0.3545 0.0376 0.3133 1.4440 0.8855 0.3526 0.3781
0.5881 0.8652 0.2093 0.0666 0.3959 0.2591 0.3729 0.5406 3.8330 1.0269
1.8715 0.6112 0.7447 0.2072 0.1275 1.2193 0.0073 0.8614 1.1969 2.3287
1.2586 0.5554 0.0095 0.6133 0.9226 0.0475 0.8421 0.2186 0.2059 1.6732
Captura de datos
individuales
Captura de datos
desde una base de
datos externa
Nota: Si todos los valores de los datos en el archivo son enteros (sin
importar si son positivos o negativos), la muestra se considera como número
entero. De lo contrario, se definen como números reales. Los valores reales deben
tener magnitudes de entre -1.0E+99 y 1.0E+99. Después de introducir los valores
en el editor de datos de ExpertFit y al dar clic en OK inmediatamente se mostrara
una tabla con el resumen estadístico del conjunto de datos siempre y cuando los
datos sean de valor real. De no ser así, si todos los valores de los datos son
números enteros, entonces se le cuestionará sobre si los datos deben ser
considerados como valores reales o no (vea la figura 3.6).
En estos momentos, Usted puede ver como se habilitan cuatro opciones más
dentro de la ficha Data. Revisemos como operan:
Figura 3.8. Histograma del conjunto de datos introducidos con un Punto Inicial del
Primer Intervalo igual a 0, un Ancho de Intervalo de 0.2 y con un Número de 10
Intervalos.
Paso 2. Models
Información adicional
sobre el modelo
seleccionado
1. Los datos de valor real se han redondeado tanto que al discretizar los
datos se complica encajar en una distribución continua.
Paso 3. Comparisons
Figura 3.13. Densidad del Histograma para la distribución Erlang ajustada por
ExperFit y los datos del tiempo entre llegada de los clientes a la central de autobuses.
P-P Plot (gráfica P-P). Muestra la discrepancia relativa que existen entre
la linealidad de los datos de origen y del modelo de distribución seleccionado.
Entre menor sea la discrepancia mayor será la certidumbre que se tenga con la
distribución seleccionada.
eje horizontal de altura 0, menor será la desviación y por tanto se tendrá un mejor
ajuste. Para este ejemplo, la diferencias verticales en el grafico están cerca de 0,
esto es una indicación adicional de que la distribución Exponencial es un buen
modelo para los datos y por tanto, la función de distribución de la muestra, es una
correcta estimación de la verdadera función de distribución subyacente de los
datos.
Figura 3.15. Pruebas de bondad de ajuste Chi-Cuadrada para el modelo Erlang con
un número de intervalos igual a 8.
Paso 4. Applications
Código de la Distribución
Erlang para su uso dentro de
FlexSim.
Como se observa, existen diferentes maneras en que estas cuatro pestañas (Data,
Models, Comparisons, Applications) se podrían utilizar para determinar la
mejor distribución que se ajuste a un conjunto de datos, los siguientes pasos son
un resumen de las recomendaciones descritas en el presente capítulo:
Preguntas
Actividades
95 75 30 40 15 4 41 38 38 3
93 81 36 93 84 20 60 93 52 76
59 61 6 78 14 55 44 83 86 3
97 75 51 44 32 12 58 94 43 71
52 31 7 79 81 91 88 15 42 24
5 5 4 2 0 4 3 2 1 4
1 0 0 5 1 1 0 5 4 1
3 4 2 5 5 4 5 0 3 4
0 3 4 2 5 3 1 5 4 2
0 2 1 0 4 4 2 0 0 3
127.74 129.98 122.07 126.57 123.55 122.5 129.63 120.73 127.54 123.04
127.21 120.07 122.22 126.37 121.15 121.76 120.25 125.42 126.18 121.75
128.12 126.16 124.5 122.3 123.06 128.85 123.68 121.77 128.72 126.83
128.16 128.72 127.73 121.59 122.42 120.01 127.55 122.79 125.54 129.51
129.19 129.9 126 127.86 129.14 128.05 121 121.62 121.53 120.18
3.22 3.20 7.77 9.26 2.80 7.37 4.04 12.13 8.90 2.90
5.66 0.87 12.79 10.14 2.74 18.31 3.55 4.45 7.84 10.41
8.98 11.99 9.97 8.97 5.30 12.60 0.89 7.40 16.73 6.33
4.11 6.47 10.41 4.29 12.96 7.91 8.85 19.96 5.50 4.43
13.31 12.55 19.98 2.70 19.41 13.10 1.52 16.38 17.44 4.00
OBJETIVOS DE APRENDIZAJE
NOTAS:
Los siguientes puntos enlistan algunas razones por las cuales FlexSim es una
buena alternativa como herramienta en simulación:
4.3. FLEXSIM
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.
f) Propiedades Rápidas
d) Biblioteca de objetos
e) Área de Trabajo
a) Menú principal
File. Con el menú mostrado en la Figura 4.4 el programador podrá hacer uso de:
View. Dentro de los comandos más comunes para alterar la vista de un modelo
se destaca los mostrados en la Figura 4.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.
Open Default Workspace: Esta función restablece al espacio de trabajo
predeterminado en un inicio.
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), es posible 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.
Edit Selected Objects: Ofrece alternativas de configuración conjunta
aplicables a un grupo de objetos seleccionados tal como: editar (Edit),
copiar información del objeto seleccionado a otro conjunto de objetos
(Copy from Highlighted), activar o desactivar ajustes en los objetos
elegidos (Switches) y permite hacer conexiones de arrastre entre un
objeto destacado y el conjunto de objetos seleccionados (Connections).
Find Objects: Asiste al
ejecutante para encontrar
rápidamente objetos
definidos en su modelo, ya
sea por nombre o por
categoría de objeto.
Model Layouts: Es una
herramienta útil para crear
diferentes diseños en
distintos escenarios, de tal
modo que sea posible
observar vistas semejantes
del modelo simplemente
con elegir un número de
Layout distinto.
Statistics. La ventana del menú mostrada en la Figura 4.9, despliega una lista de
alternativas las cuales operan estadísticas del modelo:
Help. Por último, la Figura 4.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.
b) Barra de Herramientas
Operaciones conjuntas
Creación de objetos
Run Speed
d) Biblioteca de Objetos
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
pueden ayudarnos a determinar el tiempo ocioso de un servidor durante un día
de trabajo, el tiempo de operación de un equipo en un año de producción, cuellos
de botella en una banda trasportadora, el tiempo que un cliente espera antes de
ser atendido, el número de clientes promedio en una línea de espera durante un
turno de trabajo, la tasa de producción de un montacargas, el nivel de inventarios
en un Centro de Distribución (CEDIS) y muchas otras variables que al final
formaran parte de los estadísticos que nos permitirán tomar decisiones sobre el
sistema real. La Figura 4.15 hace un desglose de los diferentes objetos en FlexSim.
FlowItem
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 (Processor, Queue respectivamente), aquí es donde la
entidad puede sufrir cambios o alteraciones para ser transformada
(MultiProcessor), aquí también se pueden unir, agrupar (Combiner), separar o
cortar (Separator), 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. Para dar ejemplos de estos se enuncian los siguientes:
- 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,
Elevator, Robot, Crane, ASRSvehicle y BasicTE, usaremos los términos Task
Executers, Ejecutores de Tareas o Recursos Móviles.
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 (FlowItem).
- Travel Networks
- Visual
- A* Navigation
- People
- AGV
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.
e) Área de Trabajo
f) Propiedades Rápidas
La ventana Quick Properties describe las propiedades tanto del área de trabajo como
de cualquier objeto incluido y seleccionado en el modelo. La ventana muestra las
propiedades más comúnmente utilizadas para el objeto resaltado, estadísticas,
propiedades generales (dimensión, tamaño, forma, entre otras) y etiquetas se
mostrarán para la mayoría de los objetos.
Si las propiedades rápidas se han cerrado, puede abrirlas a través del menú View.
ItemType/Labels
Port Connections
Output
Input
Center
el botón izquierdo del mouse sobre el primer objeto que se desea conectar, sin
Nota: para trabajar dejar de presionar la letra del teclado seleccionada, se arrastra el mouse y se da un
correctamente con el clic sobre el segundo objeto determinado. Al hacer esto, se crea automáticamente
uso de las teclas, un puerto de salida y uno de entrada, un puerto central en ambos objetos o una
usted deberá conexión extendida según corresponda a la letra presionada. Para desconectar un
permanecer en la par de objetos dependerá de cómo fueron conectados: si se conectó con la letra
vista ortográfica, de “A” desconectamos con la “Q”, la conexión de la letra “S” se rompe con la letra
lo contrario, las “W” y la conexión “D” con la “E”, la desconexión de objetos obedece al patrón
pulsaciones de tecla anterior por lo que esta acción deberá ser en el mismo orden con el que fueron
no funcionarán hasta
conectados. Ver Figura 4.17.
la segunda vez que se
pongan a prueba.
Esta acción se puede
hacer si se pulsa el
botón derecho del
mouse sobre el área
de trabajo y se
desmarca la casilla
Perspective Projection
contenida en la
ventana derecha de
Figura 4.17. Imagen ilustrativa de conexiones con el uso del teclado.
nombre Quick
Properties. Si
después de esta
acción desea Interacción del teclado
regresar a la vista en
Resulta oportuno mencionar que estas no son las únicas teclas habilitadas en el
perspectiva, es
teclado como apoyo en la construcción de un modelo de simulación en FlexSim.
necesario activar
Existen algunas más y estos son sus usos (Figura 4.18).
nuevamente el
comando Perspective
Projection. Para más
detalles, revise el
siguiente apartado.
Descripción de teclas
mismos resultados.
X: Borra la visualización de conexiones, nodos y flechas de una red. Esta
es empleada básicamente para ocultar en forma sucesiva las conexiones,
nodos y las flechas construidas con NetworkNode. También crea nuevos
puntos de Spline en una red de rutas. Para ver su funcionalidad, mantenga
presionada la letra X del teclado y haga clic sobre uno de los nodos de la
red con el botón izquierdo del mouse.
B: Visualización de conexiones, nodos y flechas de una red. Su
funcionalidad es totalmente opuesta a la X. Así pues, las conexiones,
nodos y flechas diseñadas por NetworkNode y ocultadas por la activación
de la letra X pueden ser vistas nuevamente al mantener presionada la letra
B y dando clic con el botón izquierdo del mouse sobre el nodo que no
fue oculto. En el objeto TrafficControl también puede ser utilizada esta
tecla.
V: Visualización de Output Port/Input Port, se utiliza para ver los
nombres de los puertos de entrada y salida de un objeto. Para observar
su funcionamiento, mantenga presionada la tecla V y haga clic en un
objeto con el botón izquierdo del mouse.
C: Visualización de las conexiones de Puerto Central, se emplea para ver
las conexiones de Puerto Central de un objeto. Presiónela y haga clic en
un objeto con este tipo de conexión y podrá notar los resultados.
F y R: Estas dos letras se usan para crear objetos y conectarlos a la vez,
dichas funciones fueron explicadas anteriormente en la barra de
herramientas.
G: Propiedades de conmutación rápida, su activación permite cambiar el
enfoque de la ventana de propiedades de un objeto dentro del modelo.
La vista ortográfica recuerda la última ventana de propiedades que se
abrió. Después de activar la vista ortográfica, mantenga presionada la
tecla G y haga clic en un objeto, la última ventana de propiedades abierta
actualizará su enfoque para el nuevo objeto.
Views
FlexSim
Data Tree View
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.
Toda la información del modelo está contenida dentro del árbol FlexSim
jerarquizada en nodos individuales, incluyendo los objetos de la biblioteca,
comandos, etc.
se debe recordar que a medida que se abren más ventanas, la demanda de recursos
informáticos aumenta y entonces todo dependerá de la capacidad del hardware
que tenga su equipo.
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.
dirección buscada (la Figura 4.20 ilustra tales acciones.). Si los tres ejes de colores
no se muestran, vaya al menú Edit>Resize and Rotate Objects.
Objeto resaltado
Modelos
Task Executers
Fixed Resources
Conveyors
Travel Networks
FlowItem
s
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!
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 con
el 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
5.1.
Figura 5.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 5.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
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.
Entradas/Salidas Centro/Centro
Desconector Q W
Conector A S
Vista V C
Propiedades
Previo/siguiente
Figura 5.4.
Imagen ilustrativa
Centrar vista del objeto
de la ventana de
Vista de árbol
propiedades de
Ayuda un objeto en
FlexSim.
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.
Ayuda. Al pulsar este botón se abrirá el manual de usuario en la página que describe
la ficha que se encuentre seleccionada.
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”.
A la derecha de la
lista de elección de opciones
desplegable (Inter-
Arrivaltime), hay tres
botones, cada uno actúa de
manera diferente para editar
la lista de selección de
Figura 5.5. Configuración del tiempo de opciones:
llegada de los frascos de yogurt al sistema.
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
Para que pueda navegar correctamente sobre el área de trabajo revise nuevamente el
tema Fundamentos de la Navegación en FlexSim del apartado 4.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.
Informe Resumido
Documentación
del Modelo
Figura 5.8.
Ventana de
informe y Generar Reporte
estadísticos.
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”.
Custom Chart. El gráfico personalizado le permite representar gráficamente
cualquier tipo de datos numéricos, ya sea en una tabla de valores, gráfico de
barras o gráfico de líneas. Aquí es posible agregar además de objetos, nodos,
variables globales, etc.
Financial Analysis. Esta ficha es una de las más importantes, debido a que
transforma la información numérica de los objetos en información
monetaria.
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.
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.
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.
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 5.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.
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.).
Resultados esperados:
Durante todo el tiempo de simulación, ¿Cuántas horas estuvieron
en operación cada uno de los servidores?
3. Prepara y entrega un resumen ejecutivo basado en tus observaciones, donde
expliques si es o no factible la contratación de tres servidores para esta
operación.
Con tarjeta
Tickets Compra
de de Total o
Resultados esperados
electrónica prepago boleto promedio
OBJETIVOS DE APRENDIZAJE
Descripción:
Diseño
Conveyor
El Conveyor 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.
y dé clic sobre este botón, de inmediato Usted notará que la dirección de la flecha
central del Conveyor cambio a un sentido opuesto.
Transfers
Direcció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.
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:
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.
Nombre de la tabla
No. Columnas
No. De ItemType
ha expirado.
Custom Draw: Se produce cada ciclo de tiempo simulado y permite añadir
diferentes diseños en 3D (por ejemplo, el cambio de apariencia de un objeto
en función de su estado actual).
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
de FlowItems de un FlowItem maestro que existe en un lugar llamado FlowItem
Bin. Por lo tanto, cualquier cambio realizado en este FlowItem maestro afectará a todas
las copias posteriores al Source. Las Labels son un ejemplo de cambio que se pueden
realizar en un FlowItem maestro, además de los atributos de tamaño, forma y color.
Usted puede acceder a FlowItem Bin ( ) desde la Barra de Herramientas ubicada
en la parte superior del Layout de FlexSim, o bien haciendo clic en Tools>FlowItem
Bin. Esto nos llevará a la ventana de FlowItem Bin que permite seleccionar un tipo
FlowItem en la parte izquierda y ver en la parte derecha una vista ortográfica en 3D
del FlowItem seleccionado.
Vea la figura 6.8. La segunda Label (Pieza Defectuosa) será definida dentro de la ventana
de propiedades de la banda transportadora.
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 primera sección del Conveyor. En este
entendido, será necesario detallar el uso de las Pick Lists.
Pick Lists
Figura 6.9.
Pick List Ejemplo de los
distintos usos de
una Pick List.
Popup
Asignación de Labels
{
treenode involved = item;
string labelname = "Pieza Defectuosa";
double newvalue = 2;
setnodenum(assertlabel(involved,labelname,DATATYPE_NUMBER),newvalue);
}
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 6.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
explicarán las bondades de la pestaña Flow, dé doble clic sobre el primer Queue y
seleccione la pestaña Flow.
Salida
Transporte
Entrada
Figura 6.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.
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.
FlowItems deberán salir por algún otro puerto que esté conectado; sin embargo, la
evaluación de los puertos es hecha en secuencia (del puerto 1 al puerto n). Existen
muchas formas de indicar el flujo de los FlowItems de un objeto a otro. La figura
6.12, muestra una lista de las diferentes opciones que se pueden emplear para indicar
instrucciones lógicas tanto en Send to Port como en los comandos Pull.
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.
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.
En este
propósito, diríjase a la
pestaña
Triggers>OnEntry y
seleccione la opción
Sort by Expression.
Ahí dentro seleccione
orden descendente y elija
la expresión getlabel
(item, "labelname").
Dentro de la expresión
sustituya el nombre de
la etiqueta “labelname”
por el de “Pieza
Defectuosa”. La
instrucción anterior
ordenará al Queue dar
prioridad de entrada a Figura 6.14. Programación de prioridades de en una línea
las piezas que tengan la de espera.
etiqueta “Pieza
Defectuosa”.
Finalmente, de clic en
Apply y Ok. Véase figura
6.14.
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 6.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.
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 móviles de
Figura 6.17. Conexión de un Dispatcher.
acuerdo a como estas vayan
apareciendo, pero los
modeladores pueden especificar sus propias estrategias en el Dispatcher si así lo
desean. Para configurar un equipo de recursos móviles como se muestra en la figura
6.17, arrastre un Dispatcher y dos o más Operators al área de trabajo. Conecte con la
tecla “A” presionada, al Dispatcher con los Operators. A continuación, conecte con Nota: conecte del
la tecla “S” presionada, al Dispatcher con el primer Queue. Para terminar, entre a la Dispatcher a los
ventana de propiedades del Queue y en la pestaña Flow active Use Transport. Ahora Operadores no al
que hemos terminado, el equipo de recursos móviles funcionará adecuadamente. Si revés, de lo
desea intentar diferentes configuraciones, puede agregar o quitar recursos móviles en contrario los
su modelo en cualquier momento y ver cuáles son los resultados. Con la misma Operators no se
facilidad con la que conecto Operators puede conectar cualquier otro recurso móvil. moverán.
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.
7.1 INTRODUCCIÓN
7.2 EJEMPLO: 1.1. SISTEMAS PULLED O PUSHED Y EL USO DE LA
DISTRIBUCIÓN BERNOULLI
7.3 EJEMPLO: SISTEMA DE ENRUTAMIENTOS COMPLEJOS
7.4 EJEMPLO: LÓGICA FLEXSCRIPT Y PRIORIDAD DE USO
7.5 EJEMPLO: LOS OBJETOS TASK EXECUTERS Y LA
INTERRUPCIÓN DE TAREAS
7.6 EJEMPLO: RECURSOS MÓVILES Y RUTAS DE VIAJE
7.7 EJEMPLO: USO DEL RECURSO COMBINER E IMPORTACIÓN
DE DATOS DE EXCEL
7.8 EJEMPLO: PROGRAMACIÓN DE AVERÍAS Y
MANTENIMIENTO EN LOS EQUIPOS CON LA HERRAMIENTA
MTBF/MTTR
OBJETIVOS DE APRENDIZAJE
7.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).
Descripción:
7.2.1. Conceptos
un valor porcentual entre “0” y “100”. Si es establecido el valor de 80, este indicará
el porcentaje del tiempo en que deberán aparecer números con succeed-value (valor de
éxito). Y los números con fail-value (valor de fracaso) quedarán establecidos como el
resultado de la diferencia entre 100 y 80. Por ejemplo, si hubiésemos tecleado la
instrucción bernoulli (80, 1, 2, 1), obtendriamos como resultado un valor de 1 el
80% del tiempo, y un valor de 2 el resto del tiempo (20%), mientras que el último 1
indicará el valor de la semilla. Tenga en cuenta que, en este ejemplo, la distribución
Bernoulli únicamente puede devolver uno de esos dos números, ya sea el 1 o el 2.
Los valores de éxito y fracaso pueden ser asignados a cualquier otro tema, pues no se
limitan sólo al ejemplo anterior.
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.
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.
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:
7.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
tipo de datos son comandos empleados para hacer referencia a una Label.
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)
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
Figura 7.6.
Propiedades de la tabla
global.
Queue
La segunda instrucción
importante dentro del Queue
debe programarse en la pestaña
Figura 7.7. Comando
Flow. Aquí es donde se indicará
que incrementa una
la salida de los distintos
unidad en la Label
productos a las diferentes
“Etapa” cada vez que
estaciones de trabajo según
un FlowItem entre al
Queue. 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
7.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
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 7.10.), abra la
ventana de propiedades del Source y en la primera 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.
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.
7.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, f o r , y switch.
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
comportamiento personalizado durante la ejecución.
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);
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 7.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
Queues
ALMACEN_1
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 primera
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 7.14.):
2. Ahora que se
han establecido los
tiempos de
operación,
prográmese el uso
de otro recurso
móvil para ejecutar
la tarea de
preparación. Se ha
revisado con
anterioridad como
referenciar a un
recurso móvil
mediante una
conexión de puerto
central y a través de
la opción Direct
Reference, pero
ahora se mostrará
Figura 7.14. Programación del tiempo de preparación, una tercera
tiempo de proceso, asignación de operario y prioridad de las alternativa.
tareas para la MAQUINA_1.
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 7.14.
Descripción:
7.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 7.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
Figura 7.15.
Diseño final del
ejemplo 6.
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:
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”
significa totalmente transparente y un valor de “1” significa totalmente opaco.
Place in Bay/Level: Estas listas de opciones son ejecutadas en el preciso
momento en que un FlowItem entra al Rack. Devuelven una posición de
bahía o nivel para encontrar o almacenar un FlowItem.
Minimum Dwell Time: Define el tiempo mínimo de permanencia de un
FlowItem en el Rack; aquí también se pueden plantear estrategias de
liberación.
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
grupo de NetworkNodes conectados constituyen una red.
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:
7.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 7.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 7.19.
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 7.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
del NN3 al NN2, pero si es unidireccional, sólo deberá especificarse dentro del nodo
que permite el acceso al recurso móvil.
Conexión del
NN1 al NN2
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
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.
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:
7.7.1. Conceptos
Para empezar, es necesario que tome y coloque los recursos fijos que formarán parte
del modelo tal como se muestra en la figura 7.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.
Figura 7.22.
ArrivoOrdenes:
Frecuencia de llegada,
nombre de la orden y
cantidad de órdenes
solicitadas.
Figura 7.23.
ProductosOrden:
Diferentes órdenes de
clientes con diferentes
productos por cada
orden.
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 7.22 y 7.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 la agenda de la frecuencia de llegada, el nombre de la orden y la cantidad
de órdenes solicitadas, como ArrivoOrdenes, la hoja que contiene las órdenes de los
diferentes clientes con sus respectivos productos solicitados, llámela ProductosOrden.
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.
Para establecer el libro de Excel que se desea importar, haga clic en el botón
examinar ( … ) ubicado al lado derecho de la lista Excel Workbook. Esta acción
abrirá un explorador de archivos mismo que permite elegir el archivo de trabajo de
Excel para copiar los datos necesarios. 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 “ArrivoOrdenes”).
Nombre de la
hoja de Excel
Coordenadas de posición
inicial, y total de filas y
columnas
Figura 7.24. Excel
Interface: Interfaz de Excel
para importar y exportar
bases de datos.
La siguiente lista desplegable Table Data, 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. Por el momento deje la opción
predeterminada como Source_Pallet (Source Arrival Schedule). Finalmente, active el uso
de encabezado de filas (Use Row Headers) y columnas (Use Column Headers), y en
las celdas Starting Row y Total Rows asígneles un valor de 5. El primer valor indicará
que la fila número 5 contiene los datos iniciales y el siguiente 5 refiere al total de filas
que contienen información válida. En cuanto a los valores necesarios para las
columnas serán 3 y 3 para indicar el inicio de la lectura de datos en la columna C (o
columna 3) y hasta un total de 3 columnas. Una vez que tenga la interfaz configurada,
haga clic en el botón Import Tables (ubicado en la parte inferior izquierda de la
ventana Excel Interface), y espere a que las barras de progreso lleguen hasta el final.
Con ello, la importación de datos quedará concluida. Para asegurarse que la primera
tabla se haya importado correctamente con los datos introducidos en Excel, observe
la ventana de propiedades del Source_Pallet y revise que automáticamente en la tabla
de Excel se han añadido los datos correspondientes. La siguiente figura 7.25 muestra
los resultados de la primera configuración empleando el importador de datos de
Excel.
Nota: aprovechando que está dentro del objeto Source_Pallet, indique el uso de
FlowItem Pallet en lugar de Box dentro de la lista de selección “FlowItem Class”.
Por otro lado, es importante indicar en la pestaña Trigger del objeto Source_Pallet la
agregación de etiquetas (ItemType) a cada Pallet. Es decir, es necesario que el Pallet
con el ItemType número 1 represente la OrdenHidalgo, con el número 2 se deberá
representar la OrdenQueretaro, con el número 3 la OrdenPuebla, y asi sucesivamente.
Para lograr lo antes dicho, en la pestaña Trigger de clic izquierdo en Add a new trigger
y elijase la opción On Creation. Posteriormente en la nueva lista de selección de
opciones creada elija Data, Set Item Type, y finalmente dentro del recuadro Type
seleccione rownumber.
La segunda tabla de Excel (figura 7.23.) será definida dentro de una Global
Table, dicha acción permitirá programar correctamente los diferentes productos que
contendrá cada orden solicitada por los clientes. Para realizar tal acción, diríjase a la
caja de herramientas de nombre Toolbox ( ) y agregue entonces una Global
Table, asígnele un nombre (Tabla Global_1) y haga clic en el botón Add Table to
Excel Import/Export ( ), mismo que se encuentra a la derecha, en la ventana
Quick Properties.
Combiner
Para que Usted pueda apreciar la imagen que se muestra en la figura 7.26, es
necesario entonces que vincule al Combiner con la Tabla Global que ahora contiene
los datos de las órdenes definidas en Excel. Esto se puede hacer dentro de la pestaña
Triggers del Combiner, al elegir de la lista de selección de opciones OnEntry el comando
Update Combiner Component List. Aquí dentro sólo es necesario elegir el uso de
la tabla " Tabla Global_1" y posteriormente dar clic en Apply y Ok.
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
distinto. Lo dicho, se puede realizar dentro de la pestaña Triggers de cada Source.
Descripción:
7.8.1. Conceptos
Concepto 1: Separator
1. Members: En esta primera 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 reanudará 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.
- 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 (7.28 y 7.29):
Split
Indicador de
mantenimiento
UnPac
k
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
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 19.2.4 podrá darse
cuenta de 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 atender las observaciones de la última nota mencionada
en el apartado 8.2.2 “Configuración de los objetos”.
Configuración de los Sources (ver figura 8.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 lleven
los FlowItems creados hasta los dos objetos ItemToFluids (Use Transport de la pestaña
Nota: si desea
Flow). Respecto al Almacen3 sólo es necesario escoger de la lista de selección de
cambiar el color de
opciones FlowItem Class la alternativa Cylinder para representar a los frascos.
los FlowItems
Finalmente, en este mismo Source se debe configurar el campo Inter-Arrivaltime a
puede usar el
1.5 segundos.
comando Set Object
Color de la opción
OnExit de la
pestaña Triggers.
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 de leche) y
los de la otra línea de color verde (línea de fruta).
utiliza para definir una serie de pasos que el mezclador realiza en cada lote que
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.
Dentro de
PreparadoDeFruta, ajuste
Figura 8.8. Configuración el Port a 2, Amount a 3, y
de la entrada y mezcla de
Step a 2.
ingredientes dentro del
FluidMixer.
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.
Nota: dentro de
este objeto puede
cambiar el aspecto
del FlowItem de
salida tal como su
forma, tamaño,
color, etc.
Figura 8.10.
Configuración del objeto
FluidToItem para crear el
FlowItem “Postre”.
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.
4. Spheres ( esferas) l l e g a n c a d a 5 s e g u n d o s e x p o n e n c i a l m e n t e a u n
s i s t e m a d e producción. Inmediatamente después de que llegan las esferas al
sistema, estas son almacenadas en un Queue para esperar su turno en el centro de
pintura. El proceso de pintado de cada una de las esferas corresponde a una
distribución lognormal2(0, 6.2, 0.20, 5) segundos. Al concluir el proceso de pintura,
cada esfera sale con un color diferente, mismo que es definido de acuerdo con una
distribución duniform (1, 4). Posteriormente, mediante cuatro diferentes bandas
transportadoras las esferas son enviadas al área de empaque según corresponda con
su color (véase la figura C_2). El empaque se hace a una velocidad constante de 10
segundos y por cada tarima entrante se agrupan cinco esferas del mismo color.
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
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.
13. 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.
Un primer paso a
la simulación con
FlexSim
Isaías Simón Marmolejo
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.