Documentos de Académico
Documentos de Profesional
Documentos de Cultura
F. Javier Otamendi
Universidad Rey Juan Carlos, Madrid,
ISBN: 978-0-9829782-4-5
Modelización y Simulación: Libro de Prácticas
con SIMIO
Jeffrey Allen Joines
Stephen Dean Roberts
North Carolina State University
F. Javier Otamendi
Universidad Rey Juan Carlos
Madrid, España
Noviembre 2017
Edición 3.1
Los autores v
F. JAVIER OTAMENDI es Profesor Titular del Departamento de Economía Aplicada I en
la Universidad Rey Juan Carlos de Madrid y Coordinador de las Titulaciones Económicas.
Obtuvo sus títulos de Ingeniería Industrial y Management (B.S y M.S) en Oklahoma State
University. Con posterioridad obtuvo el título de Licenciado en Administración y Dirección
de Empresas en la Universidad Complutense de Madrid y el título de Doctor por la
Universidad Politécnica de Cartagena por el Programa de Tecnologías Industriales. Su
principal interés estriba en la optimización de sistemas vía simulación así como la aplicación de la
simulación en las ciencias económicas y del transporte. Su carrera docente empezó en la Universidad Carlos
de Madrid enseñando simulación y gestión de calidad, y siguió en la Universidad Complutense de Madrid
y en Saint Louis University, Madrid, enseñando estadística para las ciencias sociales. En la actualidad,
imparte clases de estadísticas en los grados y de dirección de operaciones y simulación en postgrado.
También estuvo dos años como investigador en el Centro COTEC I+D aplicando simulación en aeropuertos.
El Dr. Otamendi ha sido el Conference Chair y Proceedings Editor de European Conference in Modelling
and Simulation en 2009 (ECMS09). Es miembro del Consejo de ECMS desde 2007. Ha participado como
ponente, track chair o session chair en ECMS, SCSC y otros congresos de simulación.
Este libro es distinto a la mayoría. Para empezar, está escrito en lo que se podría llamar un estilo
participativo. El lector no se puede sentar a leerlo sin un ordenador en el que esté instalado SIMIO. Con este
libro se espera que se participe activamente mediante la utilización de SIMIO a medida que se vayan pasando
las páginas. Nosotros, los autores, intentamos mantener una conversación con usted, lector. Nuestro
convencimiento es que la simulación no es un deporte para el espectador. Tiene que trabajar a la vez para
desarrollar competencias con el SIMIO, competencias que se desarrollan a través de la práctica. Este libro le
invita a practicar y a utilizar sus conocimientos y capacidades.
En segundo lugar, el libro se enfoca en la modelización con SIMIO, dejando aparte la mayoría del análisis
estadístico y de toma de decisiones, ya que estos conceptos se deben aprender en otra parte. No es que no
pensemos que estos temas sean importantes, porque son vitales (y cuando enseñamos simulación los
incluimos como una parte fundamental del curso), pero no vamos a emplear demasiado tiempo en este
documento, porque existen libros excelentes que pueden cubrir el vacío que dejamos. Sugerimos que, si el
lector está enseñando/aprendiendo simulación, que a la vez disponga de uno de estos libros que no están
basados en un software en particular1
Por último, este libro es deliberadamente barato (tanto el libro electrónico como su versión en papel). Un
nuevo lenguaje de simulación como SIMIO va a estar cambiando constantemente. De hecho, la gente de
SIMIO intenta tener nuevas versiones (llamadas “sprints”) una vez cada tres meses. Cualquier libro que
describa las tripas de SIMIO se volverá obsoleto rápidamente, por lo que queremos que se añadan las nuevas
características en nuevas versiones a menudo. Es posible que cambiemos algo el contenido del libro a medida
que encontremos nuevos ejemplos o enfoques. Si el lector no paga mucho por el libro, es posible que vuelva
a adquirir nuevas versiones para estar al día con los nuevos contenidos.
Nuestra intención es que usted, como lector, se convierta en un alumno activo y, como sugiere el título,
trabaje a la vez que lee. Nuestra experiencia en las aulas es que el alumno aprende más al hacer los trabajos,
por lo que este “manual de trabajo” se centra en el trabajo de laboratorio, en lo que nuestros alumnos hacen
en clase. Los capítulos de este libro generalmente corresponden a una sesión de practica de laboratorio. Si el
lector no es alumno de enseñanza reglada, pero quiere aprender SIMIO por su cuenta, pensamos que este
enfoque es atractivo para la auto-enseñanza. Un capítulo se puede cubrir en una tarde.
Por ejemplo, Discrete-Event System Simulation (5th Edition), Jerry Banks, John Carson, Barry Nelson, David Nicol, Prentice-Hall,
2010 (622 páginas)
Prefacio: Aprendizaje Activo vii
Existen diversos mecanismos para incluir la enseñanza activa en un aula. Algunos profesores empiezan la
clase con algún tipo de planteamiento del problema y de orientación hacia las técnicas de modelización
apropiadas en ese caso. Algunos otros van directamente al grano y realizan un ejercicio junto con los
alumnos. Y otros intentan que los alumnos sigan el manual a su propio ritmo. Aún así, lo que es crítico en
este tipo de enseñanza son los denominados “momentos de enseñanza”, como oposición a las clases
magistrales. Estos momentos aparecen cuando se hacen preguntas u observaciones, lo que provoca una
discusión en detalle sobre un tema en concreto. Algunas personas piensan en este proceso como un sistema
de educación tipo “pull”. El enfoque asusta a muchos profesores porque no se puede seguir un formato
estándar de clase o porque la discusión se alargue y algún tema se deje “sin cubrir”.
Para asegurar que todos los implicados participan en este proceso activo de enseñanza, normalmente
entregamos al principio de la clase una o dos páginas con preguntas que deben surgir al resolver el ejercicio.
Hemos incluido algunas de ellas a lo largo y ancho del libro. Son preguntas que tienen respuestas cortas y
que requieren que los alumnos presten atención a lo que van desarrollando. El resultado es una clase con un
alto nivel de asistencia y participación, aunque no se controle oficialmente la asistencia, porque puntuamos a
aquéllos que entregan los ejercicios al finalizar la clase. Asignaturas en la que se sigue esta metodología
docente se crean una reputación de obligada asistencia.
Bajo nuestro punto de vista, la modelización vía simulación es una forma de “ingeniería de sistemas”,
entendidos sistemas como procesos productivos o logísticos, incluso administrativos. Nuestra intención es
hacer ingeniería o re-ingeniería de un proceso o sistema, pero, al ser complejo, dificultoso o incluso
imposible experimentar con tal sistema, necesitamos desarrollar un modelo en un ordenador a imagen y
semejanza del real o del futuro sistema, y experimentar con ese modelo (de forma similar a lo que hacen con
un túnel de viento los diseñadores de nuevos aviones). La actividad crítica es el “desarrollo del modelo” – lo
que se llama “modelización mediante simulación”, o “simulación” simplemente. Este tipo de modelización
no es una ciencia exacta, pero se basa en un enfoque de resolución de problemas. Para desarrollar un modelo
se necesita: (1) un conjunto robusto de conceptos sobre modelización (y el lenguaje en que se realiza la
simulación), y (2) una implantación en un ordenador. Luego para ser un buen “simulador”, es necesario que
adquieras conocimientos sobre los conceptos de modelización y experiencia en su uso.
SIMIO proporciona un amplio abanico de conceptos y posibilidades sobre modelización vía simulación así
como capacidades atractivas tanto visuales como tabulares para presentar resultados numéricos. Sin embargo,
cualquiera que haya tenido experiencia en simulación sabe que los lenguajes y las herramientas tienen
limitaciones y alguna vez no han podido desarrollar el modelo como les hubiera gustado. En lugar de utilizar
el enfoque de “unidad/objeto, atributo y recurso”, SIMIO se basa en un paradigma con orientación a objetos
más general, en el que los objetos ejecutan “procesos u órdenes”. Así, además de disponer de los objetos y
procesos incluidos en una librería estándar, el usuario puede añadir más, quitar los actuales o cambiarlos para
satisfacer sus necesidades particulares.
Por lo que aprender a utilizar SIMIO requerirá de un cambio de mentalidad. Tendrá el usuario que apartar los
enfoques que hayan utilizado con otros lenguajes y empezar a adoptar otra visión a la hora de atacar el
proceso de desarrollo del modelo. Pensamos que si se trabaja este libro con cariño y atención, se aprenderá lo
suficiente sobre el enfoque que sigue SIMIO como para poder subir un nivel y convertirlo en su propio
enfoque sobre simulación.
Este libro está organizado de forma conceptual para hacer modelos rápidamente. En los primeros cinco
capítulos, nos concentramos en el uso de la Librería de Objetos Estándar, “Standard Library Objects”, de
SIMIO. Se puede realizar mucha modelización sin necesidad de recurrir a conceptos u objetos más
complejos. Los siguientes siete capítulos explican cómo ampliar los objetos estándar utilizando procesos,
viii Modelización y Simulación: Libro de Prácticas con SIMIO
“processes”. Este aprendizaje dota de mayor flexibilidad a la modelización sin necesidad de inventar una
nueva librería de objetos. Los últimos capítulos se utilizan para discutir la creación de nuevos objetos y la
modificación de los ya existentes en SIMIO, de forma que se demuestre todo el poder de este enfoque
orientado a objetos.
El libro está diseñado para que sea lea capítulo a capítulo, aunque sea posible elegir ciertos conceptos y
temas. En los primeros capítulos, construimos modelos de forma directa sin mucha explicación de cómo se
seleccionan ciertas características. En los últimos capítulos, por el contrario, se argumentan las elecciones de
las distintas opciones así como otras posibles vías de modelización. Otros capítulos al final del libro
profundizan también en ciertos temas vistos con anterioridad, puesto que es sabido que la redundancia en el
aprendizaje ayuda a fortalecer los conceptos. Para cuando se acabe con el libro, se debe por tanto estar bien
preparado para construir modelos en SIMIO y entender las bondades de los distintos enfoques que se pueden
utilizar.
Al final de la mayoría de los capítulos, se incluyen comentarios sobre los temas tratados. Se enfatizarán las
fortalezas y debilidades del enfoque de modelización y el lenguaje utilizado (no tenemos intereses
financieros en SIMIO). Los diseñadores de SIMIO fueron también los diseñadores de Arena, por lo que se
encontrarán trazas y reminiscencias de Arena en SIMIO. Ya que alguno de los lectores migrará desde Arena,
proporcionaremos información sobre estas trazas. Sin embargo, prepárense para ir mucho más allá de lo
aprendido con otros lenguajes de simulación.
Cuando se compara Arena y SIMIO, no se encontrarán en SIMIO rutinas de análisis para datos de entrada o
de salida. SIMIO probablemente nunca tendrá la capacidad de analizar los datos de entrada, ya que hay
muchos disponibles2. Cuando se usa un modelizador de datos de entrada, es necesario establecer de forma
correcta una relación entre los parámetros estimados por el modelizador y los parámetros necesarios en
SIMIO. El analista de resultados, “Output Analyzer”, y el analista de procesos, “Process Analyzer”, han sido
incorporados a SIMIO, con la posibilidad de escribir información en ficheros externos para su posterior
análisis. SIMIO está mejorando la presentación de resultados casi de forma diaria. También ha incorporado
recientemente rutinas sobre selección y ranking de subconjuntos de alternativas, así como posibilidades de
optimización.
En un sentido muy limitado, SIMIO es como Arena con las capacidades de Siman para analizar procesos. Sin
embargo, esta visión no hace justicia a la mayor flexibilidad y las enormes posibilidades ofrecidas por
SIMIO. Además, SIMIO presenta la posibilidad de representar a escala el modelo en 3D, y posee una
orientación a objetos que permite añadir y modificar objetos de forma sencilla. SIMIO dispone de una
apariencia y una disposición más modernas y, en nuestra opinión, unas posibilidades mayores que las de la
mayoría de los otros lenguajes de simulación.
Ciertos estilos se utilizan en este libro para ilustrar objetos, nombres y parámetros y para diferenciarlos
claramente. Los objetos estándar de SIMIO se escriben en Versales y una fuente Courier New (SERVER)
mientras que los creados por el usuario también irán en negrita (DELAYOBJECT). Las propiedades asociadas
con estos objetos se incluyen en cursiva (Processing Time). Los nombres de los procesos irán en cursiva y
entre-comillados, como “OnEnteredProcessing”, mientras que los disparadores de proceso, “triggers”
(Exited) sólo irán en cursiva al ser propiedades. Etapas en los procesos, como Assign se presentan en
cursiva y en Courier New. SIMIO utiliza también muchas expresiones, que se indican en Courier New (
SrvOffice.Contents >0). Los nombres de los objetos que han sido definidos por el usuario irán en
negrita (incluir un servidor, SERVER, de nombre SrvOffice). Los valores asociados con las propiedades se
incluirán de la misma forma que las expresiones o entre comillas para cadenas de texto (“True”).
Queremos dar las gracias a nuestros alumnos, que han ayudado mucho a nuestra comprensión del proceso de
aprendizaje y que a menudo nos hacen que demostremos nuestra ignorancia o nuestra falta de preparación.
Apreciamos también la respuesta amable de la gente de SIMIO a nuestra inacabable batería de preguntas y
dudas, en especial a Dave Sturrock y a Dennis Pegden. Finalmente, queremos dar las gracias a nuestras
familias por su comprensión y paciencia porque a menudo pasamos más tiempo hablando entre nosotros que
con ellos.
Por favor, hágannos saber cómo mejorar este “workbook” y cómo podemos satisfacer mejor sus necesidades.
La simulación es divertida. Se pueden crear modelos que sean atractivos visualmente y SIMIO eleva el
disfrute a niveles insospechados con su capacidad de presentación en 3 dimensiones (3D). Lo que significa
que no sólo el lector puede ver cómo se comporta el modelo, sino también los que trabajan con él,
aumentando la credibilidad del proceso.
Asumimos que ha instalado SIMIO en su ordenador y que está listo para empezar.
Paso 1: Abra SIMIO o bien a través del menú Inicio en Windows o bien haciendo clic en un icono de
SIMIO, “ ”, que quizás haya incluido en la barra de herramientas de Windows o en el Escritorio.
Barra de
Parece MS SIMIO Office
Crear un
nuevo modelo
Información
General de SIMIO
Modelos
Elementales
Versión
Modelos
Completos
Undo/Redo
MySimioProject
Unidades
Pestaña de
Ejecución Objetos in
Pestaña MySimioProject
Abrir/Cerrar
Panel de
[Librería Tapiz de Navegación
Estándar] Diseño
Inspector de
Propiedades
[Librería de
Proyecto]
Paso 3: Haga clic con el botón derecho del ratón en MODELENTITY y MODEL en el Panel de Navegación,
Navigation Panel, y seleccione las propiedades o características del modelo, Model Properties.
3
Las versiones “Sprint” de SIMIO salen aproximadamente una vez cada tres meses, por lo que el software irá cambiando
rápidamente. Asegúrese de conseguir las actualizaciones con nuevas características y con correcciones de posibles errores.
2 Modelización y Simulación: Libro de Prácticas con SIMIO
Pregunta 2: ¿Cuál es el tipo de objeto de MODEL?
Paso 4: Tenga en cuenta siempre los botones Undo/Redo. Se pueden utilizar para corregir errores y recuperar
componentes del modelo previamente utilizados. Cuando una acción no pueda ser revertida, SIMIO
lanzará una advertencia.
Paso 5: Las unidades (“Units”) son una forma conveniente de especificar las unidades por defecto de tiempo,
distancia o longitud y de flujo.
Una pequeña tienda de helados vende cucuruchos de helado. Los clientes llegan y esperan en cola hasta ser
atendidos por uno de los dos dependientes. Estos dependientes reciben y preparan el pedido y se lo entregan
al cliente, quien se dirige al cajero para pagar. Después de pagar, los clientes se van de la tienda. Mientras se
prepara la simulación, suele ser conveniente realizar un diagrama de proceso o flujograma. La Figura 1.3
muestra los cuatro procesos en que se divide la compra y el pago del helado.
Que los clientes llegan a la tienda según un modelo de probabilidad exponencial, con un tiempo
medio entre llegadas de 0.5 minutos.
Que el tiempo que tarda el dependiente en interactuar con el cliente y entregarle el cucurucho de
helado se puede representar mediante un modelo de probabilidad triangular, con un mínimo 0.4
minutos, una moda o valor más habitual de 0.9 minutos, y un máximo de 1.5 minutos.
Que el tiempo que emplea el cajero en cobrar sigue también una distribución triangular con un
mínimo de 0.3, una moda de 0.4 minutos, y un máximo de 0.6 minutos.
Que el tiempo de desplazamiento entre cada proceso es de 15 segundos.
Si ambos dependientes están ocupados, los clientes esperarán en una única cola según lleguen, siguiendo lo
que se denomina una prioridad FCFS (first-come, first-served; o FIFO; al primero que entra, primero se le
atiende). También hay cola única delante del cajero. Asumiremos también que no hay problemas de espacio.
Paso 1: Debería estar bastante claro que los clientes deberían ser modelizados con un MODELENTITY
mientras que el MODEL representará el flujograma presentado en la Figura 1.3.
Paso 2: Añada objetos en el modelo haciendo un clic sobre el objeto que se desee en la [Standard Library].
Arrastre el objeto sobre el tapiz de diseño y vuelva a hacer clic para colocarlos en posición (también
puede hacer clic y arrastrar los objetos para recolocarlos o borrarlos del modelo). Cuando haga clic en un
objeto, sus propiedades aparecen en el inspector de propiedades, property inspector (que suele estar
colocado en el panel inferior derecho) - véase Figura 1.4.
Objeto Fuente
(Source)
Propiedades
Seleccionado
de la Fuente
Servidor
Nombre
del Objeto
Camino con
Tiempo de
Desplazamiento
Pregunta 3: Un objeto servidor, SERVER, tiene tres líneas (“lines”) que lo rodean. ¿Cómo se llaman?
Pregunta 4: Un objeto SERVER tiene un nodo “input” y otro “output”. Estos nodos son también objetos de
la [Standard Library]. ¿Cuál es el nombre en la librería estándar del nodo de entrada?
Haga doble click encima del objeto para cambiar el nombre directamente.
4 Modelización y Simulación: Libro de Prácticas con SIMIO
Paso 4: Haga clic en cada objeto y rellene sus propiedades según las hipótesis y los datos de partida. La
Figura 1.5 muestra las propiedades asociadas con el objeto fuente, SOURCE.
Nombre de la Entidad
Propiedades
Objeto Fuente Llegadas en función
de Tiempo entre
Llegadas
Unidades de
Tiempo Editor de
Expresiones
Revela
Detalles
Descripción de
la Propiedad
Object.SubObject.SubObject(parámetros)
Para activar el editor de expresiones, empiece por especificar un carácter. Selecciona el objeto, su(s)
subobjeto(s), y su(s) propiedades. Los editores de expresiones tienen la facilidad de “auto-completar”, lo que
significa que se completará el nombre a partir de los primeros caracteres. También indica si existen
subobjetos disponibles para este objeto en particular.
Paso 6: Antes de ejecutar el modelo, vamos a cambiar el momento de tiempo en el que acabará la
simulación en el configurador Run Setup, en la pestaña Ejecutar (“Run”), como muestra la Figura 1.6.
Determinando
el final
Paso 7: Ahora, simulemos durante un rato – haga clic en el botón para empezar la simulación.
Paso 8: Vea cómo se mueven las entidades, MODELENTITIES ( ), por los caminos, TIMEPATHS. Las
entidades se acumulan en el lugar denominado contenidos de la fila de entrada,
INPUTBUFFER.CONTENTS, y se procesan en la fila PROCESSING.CONTENTS, ambos mostrados como
“líneas” que rodean los objetos servidor. Puede mover los objetos mientras el modelo está en ejecución.
Pregunta 7: Mantenga apretado el botón izquierdo del ratón, y muévalo a derecha y a izquierda, arriba y
abajo. ¿Qué sucede?
Pregunta 8: Mantenga apretado el botón derecho del ratón, y muévalo a derecha y a izquierda, arriba y
abajo. ¿Qué sucede?
Paso 10: Cambie entre las vistas 2-D y 3-D usando las teclas “2” y “3”
Pregunta 9: ¿Qué sucede en 2-D cuando se mantiene apretado el botón izquierdo del ratón, y éste se
mueve a derecha y a izquierda, arriba y abajo?
Pregunta 10: ¿Qué sucede en 2-D cuando se mantiene apretado el botón derecho del ratón, y éste se
mueve a derecha y a izquierda, arriba y abajo?
Paso 11: Experimente en 2-D y 3-D mientras mueve las estaciones y cambia el “layout” del modelo.
Cambie el tiempo de desplazamiento del puesto Pedir a 50 segundos para percibir otro tipo de cambio.
La animación, Animation, es a menudo lo que interesa a la gente acerca de un modelo. Un modelo de SIMIO
en 3-D, aunque pueda requerir algo de trabajo adicional, puede motivar cierta atención extra. En esta sección,
le daremos instrucciones para crear una animación que se asemeje a lo que se muestra en la Figura 1.7.
Paso 2: Seleccione el objeto Pedir y elija una mesa, “table”, como figura. Repita el procedimiento para el
objeto Pagar. Ajuste el tamaño de los objetos SERVER para que correspondan con el tamaño de una
persona.
Paso 3: Ahora, añadamos gente de pie detrás de las mesas. Para hacerlo, cambie a 3-D y seleccione la
pestaña para dibujar, “Drawing”. Haga clic en el botón “Place Symbol” y seleccione una persona que
represente al dependiente. Cuando la persona ha sido posicionada, puede hacer clic en una de las
esquinas y presionar la tecla Ctrl para rotar el dibujo. Sitúe a la persona detrás de la mesa. Duplique al
dependiente utilizando la secuencia Ctrl-V y Ctrl-P. Haga lo mismo para el objeto Pagar.
Paso 4: Mueva los símbolos por el tapiz para conseguir una mejor visualización de la tienda de helados.
Puede ahora añadir paredes utilizando la herramienta “Polyline” del Drawing panel. Asegúrese de incluir
la altura del objeto en la sección “Object”. Debe darse cuenta de que las medidas de distancia están
especificadas en metros salvo que lo especifique en Unidades. Puede que tenga que modificar la altura de
los objetos para que sean consistentes.
Paso 5: En una animación anterior, el camino entre Pagar y Salida debería también incluir un “path
decorator”. Los decoradores de caminos se pueden invocar seleccionando el camino y seleccionando
“Decorator”. Para visualizar mejor a la gente en este camino, el tiempo de desplazamiento a 300
segundos.
Paso 1: Primero, miremos los resultados del modelo básico, mostrados en la Figura 1.8. Quizá podamos
denominar a este modelo “sistema actual” (“present system”). En la pestaña de ejecución, “Run”, cambie
la duración de la simulación a 8 horas. Los resultados de las simulación se pueden ver en la pestaña de
resultados, “Results”.
Pestaña de
Resultados
Atributos Filtro
Variable
Reordenar
Resultados
Paso 3: Cada atributo va acompañado de dos símbolos – uno para re-ordenar la columna y otro para filtrar o
seleccionar lo que se muestra en cada columna.
Pregunta 12: Filtre la estadísticas para mostrar sólo las medias para MODELENTITY. ¿Cuál es el número
medio en el sistema, Number in System, y el tiempo medio de permanencia en el sistema, Time
in System?
Paso 5: Haciendo clic con el botón derecho en “Results Field”, puede mostrar “show field list.” Así puede
añadir otros campos de cálculo a las columnas.
Paso 6: Las categorías, “Categories”, para las que se pueden obtener estadísticas son: Contenido, Content,
Producción total, Throughput, Capacidad, Capacity, Tiempo de flujo, FlowTime, Estado en el que se
encuentra un recurso, ResourceState y Tiempo de espera, HoldingTime. Estos resultados se aplican a
cada fuente de datos.
Paso 8: Advierta que el tiempo de espera se muestra como “HoldingTime” del “InputBuffer” mientras que
“Content” de InputBuffer muestra el número en espera.5
Pregunta 15: ¿Cuál es el tiempo medio de espera (holding time) en el InputBuffer de Pedir?
Pregunta 16: ¿Por qué el número medio de Content de Pedir es igual a la media de unidades
programadas, UnitsAllocated, con anterioridad?
Paso 9: Para volver al modelo, necesita seleccionar la pestaña “Facility”, que está a la misma altura que la
pestaña “Results”.
La terminología de SIMIO de “HoldingTime” y “Content” puede parecer que no sea estándar. Generalmente, la Teoría de Colas o
de Líneas de Espera utiliza los términos “waiting time” y “number in queue”. También “waiting line length” o “number waiting” son
términos que se utilizan en vez de “number in queue.”
Si usted está familiarizado con el diseño orientado a objetos, Object Oriented Design (OOD), la librería de
SIMIO, [Standard Library], debería ser denominada más apropiadamente como una librería de clase, “class”
library. Son las clases de las que se crean objetos. La acción de seleccionar y mover al tapiz estos objetos es
lo que permite crear una instancia del objeto. Las propiedades, tal como se muestran en el inspector de
propiedades, son las características básicas de los objetos. Más adelante, verá cómo añadir propiedades. Las
propiedades se pueden inicializar pero no cambiar. Otro tipo de atributo, al que SIMIO denomina variable de
estado, STATE variable, puede ser incluida en el modelo si los atributos han de ser modificados durante la
simulación.
Los pasajeros llegan de acuerdo a un modelo exponencial con una media de un minuto entre llegadas. Se
dirigen andando hacia el mostrador de facturación a un ritmo de entre 2 y 4 millas por hora (según un modelo
uniforme).
Los pasajeros cubren una distancia de 50 yardas desde la entrada al edificio hasta el check-in. Después de la
facturación, han de recorrer 65 yardas hasta el control de seguridad.
Existen en la actualidad 4 mostradores con sus respectivos operarios, que tardan entre 2 y 5 minutos por
pasajero, siguiendo una distribución uniforme. Los pasajeros esperan en una fila común a todos los puestos
según su orden de llegada.
Paso 1: Cree un nuevo modelo, como el que se muestra en la Figura 2.1. Haga clic con el botón derecho en
objetos en el panel [Navigation] y vea sus propiedades. Llame al proyecto, PROJECT, “Aeropuerto”.
Incluya el valor “Pasajeros” en la propiedad Model Name. Llame al modelo, MODEL, “Aeropuerto”.
Añada una fuente o llegada, SOURCE, un servidor, SERVER, y un sumidero o salida, SINK, de a librería
estándar al tapiz Facility, y conéctelos utilizando un camino, PATH (todo esto puede ser realizado
utilizando el Add-In desde “Project Home”).
Paso 2: Haga clic y arrastre dentro del tapiz una entidad de MODELENTITY desde el panel [Project Library].
Cambie los nombres de los objetos para identificar el puesto o la operación que representan. Cambie
también el nombre de DefaultEntity a Pasajero. Cambie su símbolo a una persona utilizando la librería
de objetos y personas.
Paso 4: Para los caminos, cambie la propiedad Drawn to Scale , dibujar a escala, a “FALSE” e incluya las
distancias correctas en ambos objetos. Recuerde que el camino desde la entrada a check-in es de 50
yardas mientras que el camino entre check-in y seguridad es de 65 yardas.
Paso 1: Aunque ya podríamos ver la simulación, cambiemos el símbolo del CheckIn. Se puede hacer tanto
haciendo clic en el objeto y cambiando el símbolo a alguno de los predeterminados de SIMIO, o
descargando nuevos símbolos desde Google’s 3D Warehouse. O si ya dispone de modelos en su
ordenador, importando dibujos desde ellos.
Paso 2: Para utilizar nuevos símbolos, seleccione el objeto CheckIn y elija alguna de las opciones de Project
Symbols. “Google’s 3D Warehouse” debería aparecer cuando selecciona el botón “Download Symbol”,
que le permitirá buscar el modelo que quiera. Cuando lo haya encontrado, haga clic en “Download
Model” y SIMIO los importará en una ventana en la que se pueden cambiar sus propiedades, como el
tamaño y la orientación. Pruebe a buscar “Airport Baggage”.
Paso 3: Cuando haya descargado de Google, aparece la ventana “Import”. Puede ver el símbolo descargado
en 2D o 3D. El símbolo tiene su longitud, anchura y altura en metros, variables que pueden ser
modificadas. También se muestra una ayuda, “hint”, sobre la altura, en relación a la de una persona.
Finalmente, se puede rotar el objeto de forma que tenga la orientación6 adecuada.
Paso 4: Posicione el CheckIn de forma que el input BASICNODE, la fila InputBuffer, y la fila de Processing
se asemejen a un aeropuerto, siguiendo la Figura 2.2.
Paso 5: Ejecute el modelo y ajuste la animación (en 2D y 3D). Modifique la fila Processing de CheckIn de
forma que sólo 4 personas puedan estar en proceso a la vez (recuerde que la capacidad es cuatro).
Utilice la ventana “hint”, que se abre al presionar la tecla “h” del teclado: ayuda a rotar, dimensionar y mover objetos en SIMIO.
12 Modelización y Simulación: Libro de Prácticas con SIMIO
Processing (para Símbolo
4 puestos) Descargado
Input
Input Buffer
Queue
Los resultados de una simulación son variables aleatorias producidas por las entidades que fluyen por el
modelo y son procesadas. Su llegada es aleatoria lo mismo que los tiempos de proceso. Así, una repetición o
ejecución del modelo resulta en un único valor experimental. Este valor no es preciso, por lo que necesitamos
hacer muchas repeticiones para mejorar la precisión.
Paso 1: Cambie la duración de una repetición a 24 horas y ejecute la simulación. Cuando finalice, haga clic
en “Results” y accede a la pantalla de resultados.
Pregunta 3: ¿Piensa que son buenos resultados? ¿Por qué sí o por qué no?
Paso 2: Para ganar en confianza en nuestros resultados, el modelo ha de ser simulado varias veces. En la
pestaña “Project Home” se puede añadir un experimento que facilite la ejecución múltiple de un modelo.
En la pestaña “Design”, cambie el número de repeticiones a 10 y realice el experimento. Debe tardar
poco y el final de cada repetición debe ir apareciendo en la ventana de comentarios en la parte de debajo
de la pantalla. Las repeticiones no tienen que ser realizadas en un orden secuencial, pues dependerá de las
características del ordenador.
Paso 3: Puede ver los resultados en la tabla “Pivot Grid” o en la pestaña “Reports”. Los campos incluidos
ahora son el mínimo “Minimum”, el máximo “Maximum”, y el error “Half-width”. El error es la mitad
de la anchura de un intervalo de confianza del 95%. El nivel de confianza, “Confidence Level”, puede ser
modificado en las propiedades del experimento, Experiment Properties.
Pregunta 4: ¿Cuáles fueron los resultados para el número de pasajeros en el sistema de facturación, en
términos medios, mínimos y máximos, y de error?
Paso 4: Se puede añadir la desviación típica o estándar de la media haciendo clic con el botón derecho sobre
Filter Fields, y seleccionando la opción Std. Dev de “Show Field List”.
Pregunta 5: ¿Qué valor ha obtenido para la desviación típica del número de pasajeros en el sistema?
Suponga ahora que queremos analizar el efecto de los cambios en la capacidad o número de operarios en los
mostradores de facturación o check-in. Podríamos simplemente cambiar la capacidad y volver a ejecutar la
simulación para obtener nuevos resultados. Una forma mejor es montar un experimento de SIMIO,
“experiments”.
Paso 1: En el panel Facility, seleccione el objeto CheckIn. Haga clic con el botón derecho en la propiedad
capacidad inicial, Initial Capacity, y seleccione “Set Referenced Property”. Cree una nueva propiedad,
“Create New Referenced Property”, y denomínela CheckInCapacity.
Paso 2: En la pestaña “Project Home”, cree un nuevo experimento, “New Experiment”, y vea la pestaña de
diseño, “Design”. Se muestra nuestra nueva propiedad de referencia en una nueva columna.
Paso 3: Añada nuevos escenarios, nuevas filas en la tabla, y cambie los valores de la nueva variable
CheckInCapacity a 2, 3 y 4. Puede añadir filas haciendo clic en el símbolo asterisco “*” de la primera
columna. La tabla del experimento debe asemejarse a la mostrada en la Figura 2.3.
Propiedad de
Referencia
Paso 5: Advierta que la tabla de resultados, Pivot Grid, incluye ahora columnas para cada escenario.
Paso 6: La pestaña de resultados, “Reports”, es una buena forma de comparar escenarios, pues estos se
ordenan bajo cualquier variable.
Pregunta 7: ¿Cuál es el valor medio y el error para el tiempo medio de permanencia en el sistema? ¿Por
escenario?
Paso 7: Suele ayudar y es aconsejable añadir variables de salida o respuesta, “responses”, en el experimento.
Simplemente, haga clic en “Add Response” en la pestaña “Design”. Añada las siguientes dos respuestas
con las siguientes expresiones:
Paso 8: Haga reset y empiece otra vez la simulación mirando a los resultados en los gráficos de respuesta
(“Response Chart” results) a la vez que la tabla de resultados (véase Figura 2.4). Para organizar las
Respuestas
Gráficos de
Máximo respuesta
Media
Percentil del
25% Mediana
Paso 10: Puede modificar la gráfica utilizando las opciones proporcionadas por el “Response Chart”. La
gráfica muestra por defecto el máximo valor observado de la variable, el percentil del 75% o cuartil 3, la
mediana o el percentil del 50%, el percentil del 25% o cuartil 1 y el mínimo (véase Figura 2.4). La
sombra proporciona además el intervalo de confianza de la media, con el nivel de confianza especificado
en el experimento.
Paso 1: Borre el objeto EXPERIMENT del modelo del aeropuerto desarrollado en el capítulo anterior.
Mejoraremos el modelo para incluir la elección de tres posibles rutas a seguir por los pasajeros que
llegan al aeropuerto. Los pasajeros que necesitan facturar y coger sus billetes pueden tanto facturar en la
acera exterior del terminal o en los mostradores principales dentro del aeropuerto, mientras que el resto
que no ha de facturar puede ir directamente hacia el control de seguridad (véase Figura 3.1).
Ruta1
Ruta2
Ruta3
Ruta2: Los pasajeros que han realizado la facturación online y no necesitan pasar por el mostrador,
sólo necesitan recorrer las 125 yardas hasta el control de seguridad.
Ruta3: El resto de pasajeros, que van a utilizar los mostradores dentro del edificio, necesitan recorrer
50 yardas hasta alcanzar uno de los dos mostradores que existen. Los operarios emplean por pasajero
entre 3 y 10 minutos, según un modelo uniforme. Para llegar al control de seguridad, han de recorrer
65 yardas más.
Paso 2: Se ha observado la distribución de probabilidades por ruta de los pasajeros (Tabla 3.1).
Paso 3: Para modelizar la decisión de un pasajero sobre su posible ruta, se ha de utilizar la propiedad
Selection Weight , de los objetos camino, PATH. La probabilidad de elegir una ruta en particular es el peso
otorgado a esa ruta dividido por la suma de los pesos otorgados a cada una de las rutas alternativas.
Incluya ahora los pesos a cada ruta (véase Figura 3.2).
Peso según
Probabilidad
Reglas de
Conexión
Pregunta 1: ¿Cuál es el número medio de pasajeros esperando tanto en la acera como en los
mostradores?
Caminos con Desvíos, Tablas de Ritmos y Dependencias entre Entidades: Aeropuerto bis 17
Pregunta 3: ¿Cuál es el tiempo medio de espera en el sistema de facturación?
Los pasajeros no suelen llegar con un ritmo constante a lo largo de todo el día a un aeropuerto (incluso si
llegan de forma aleatoria), por lo que debemos ampliar nuestro modelo para manejar esa situación. Nuestro
nuevo enfoque es permitir variaciones en los ritmos de llegada a lo largo del día. Para modelizar estos
cambios de ritmo, utilizaremos un objeto en SIMIO que se denomina tabla de ritmos, RATE TABLE. Esta tabla
se ha de referenciar cuando se determine la lógica de llegadas de un objeto fuente, o SOURCE. Es importante
comprender que los tiempos entre llegadas consecutivas para estos ritmos asumirán que provienen, como es
habitual, de una distribución exponencial. La media de esta distribución es lo que cambia durante el día. Si
estos tiempos son uniformes, es conocido que el número de llegadas sigue una distribución Poisson. Como el
parámetro (su media) cambia con el tiempo, se denomina formalmente como un proceso de llegadas “Poisson
no-homogéneo”, o NHPP (Non-Homogeneous Poisson Process). De esta forma, cuando se utiliza una tabla
de ritmos de SIMIO, se asuma que el proceso de llegadas es NHPP.
Paso 1: Para crear un patrón de llegadas, RATE TABLE, seleccione los datos en la pestaña “Data” y luego
haga clic en Create→Rate Table, asignando el nombre PassengerArrivalRate. La Tabla 3.2 muestra el
flujo por hora a lo largo de las 24 horas del día. Se muestra que llegan más pasajeros por la mañana entre
las 6 y las 9 y por la tarde entre las 18 y las 20 horas. Un ritmo de 0 implica que no llegan clientes
durante esa hora.
Modifique las
llegadas
Pregunta 4: ¿Cuál es el tiempo medio de espera en cada uno de los tipos de mostrador?
En un aeropuerto aparecen distintos tipos de pasajero. Algunos son viajeros nacionales mientras que otros
son viajeros internacionales. Algunos pasajeros son minusválidos y requieren atención especial. Los
diferentes tipos de pasajeros implican distintos tipos de proceso. Para modelizar estos tres casos, se usan
tablas de datos, Data Tables.
Paso 1: Para crear una tabla de datos, DATA TABLE, haga clic en “Tables” en la pestaña “Data”, y luego en
“Add Data Table.” Llámela PassengerTable. En nuestra tabla de datos, se ha de mostrar el tiempo de
procesos para cada uno de los tres tipos de pasajero en cada mostrador de facturación. Seleccione las
propiedades en la opción “Standard Property” en la sección Properties. La propiedad PassengerPriority
será de tipo entero, Integer, mientras que los tiempos de facturación serán propiedades tipo Expression7.
Las prioridades 1, 2, y 3 representan los pasajeros nacionales, internacionales y minusválidos (Figura
3.5).
Propiedades
Si primero especifica el nombre “General”, se convertirá en el valor por defecto de la propiedad “DisplayName”.
Caminos con Desvíos, Tablas de Ritmos y Dependencias entre Entidades: Aeropuerto bis 19
Aunque los tiempos de facturación estén en minutos, no tenemos que especificar sus unidades, “Unit
Type” (véase Figura 3.68).
Dejar sin
Especificar las
Unidades de
Tiempo
Distribución
Prioridad
Discreta donde
Inicial cada tipo de
pasajero es
igualmente
posible (un
tercio)
Puede parecer obvio que las unidades de las propiedades de tiempo se deben especificar; sin embargo, si las unidades de tiemp o no
están en horas (véase Paso 3), SIMIO no hará la interpretación apropiada. Por eso es mejor dejar las unidades sin especificar y no se
intentarán convertir los datos hasta que se usen.
20 Modelización y Simulación: Libro de Prácticas con SIMIO
Paso 4: Necesitamos ahora especificar el tiempo de proceso de los distintos mostradores de facturación para
que dependa del tipo de pasajero. Para ello se trabaja con la variable de estado Priority:
En CurbSideCheckin:
PasajeroTabla[Pasajeros.Priority].CurbSideCheckInTime
En CheckIn:
PasajeroTabla[Pasajeros.Priority].InsideCheckInTime
Perciba que lo que va entre corchetes [] se usa para designar la fila específica dentro de la tabla, de forma
similar a las matrices en los lenguajes de programación. Desafortunadamente, el editor de expresiones no
conoce las propiedades de la tabla de datos, DATA TABLE, por lo que se debe teclear la propiedad dentro
de la expresión. También, asegúrese de que las unidades del tiempo de proceso son minutos.
Paso 5: Ejecute el modelo. Acuérdese de que no llega nadie hasta las 5am, por lo que no hay animación
hasta ese momento.
Pregunta 7: ¿Cuál es el tiempo medio de espera por tipo de facturación (Curbside y Inside)? 9
Hay veces que las filas en los mostradores tradicionales de dentro del edificio parecen saturadas. Decidimos
añadir un segundo mostrador dentro del terminal para atender a los pasajeros durante los períodos pico.
Esencialmente, los pasajeros se dirigirán a aquella fila que tenga menos gente. La distancia desde este
segundo grupo de mostradores al control de seguridad es de 75 yardas.
Paso 1: Añada el segundo mostrador. Llámelo CheckIn2. Asuma que tiene una capacidad de 1 y un tiempo
de proceso igual a los de los otros mostradores. Añada un camino adicional de 75 yardas hasta el control
de seguridad, Security.
Paso 2: Hay que modelizar la decisión que toman los pasajeros que facturan en el interior del terminal de
forma que se dirijan a la fila con menos gente. Hay varias formas para modificar el modelo. Quizá la
forma más obvia sea añadir un TRANSFERNODE que manda pasajeros a la cola más corta. La distancia
desde LLEGADA a este TRANSFERNODE es de 50 yardas (recuerde que el peso es 70 para este camino y que
tendrá que borrar el camino original hacia el objeto CheckIn).
En el TRANSFERNODE se debe especificar la regla Outbound Link Rule como “By Link Weight”
Marque las propiedades de pesos, Selection Weights, de los dos caminos que salen del
TRANSFERNODE (el “valor” de una expresión verdadera, “true”, es 1 y 0 si es falsa, “false”)
Hacia CheckIn:
CheckIn.InputBuffer.Contents.NumberWaiting <=
CheckIn2.InputBuffer.Contents.NumberWaiting
Los resultados del modelo no se separan automáticamente por tipo de pasajero. Hay que utilizar conceptos (por ejemplo, añadir tus
propias variables de resultados) que se describen en el Capítulo 5 y en el Capítulo 6.
Caminos con Desvíos, Tablas de Ritmos y Dependencias entre Entidades: Aeropuerto bis 21
Hacia CheckIn2:
CheckIn2.InputBuffer. Contents.NumberWaiting <
CheckIn.InputBuffer.Contents.NumberWaiting
Pregunta 9: ¿Cuál de los dos mostradores es el elegido cuando existen empates porque las filas
InputBuffer tienen el mismo número de pasajeros (por ejemplo, si las dos están vacías)?
Pregunta 10: ¿Cuál es la utilización de CheckIn2? ¿Tiene sentido tener los dos mostradores?
Supongamos que deseamos tener abierto el segundo mostrador sólo entre las 10am y las 6pm. Esta
problemática requiere la utilización de horarios de trabajo, que serán especificados con el componente
“Schedules” de la pestaña “Data”.
Paso 1: Haga clic en el botón “Add Schedule” en el icono “Schedules” de la pestaña “Data”. Denomine este
horario como SecondCheckInStation. Cambie el patrón de días de trabajo, Days in Work Pattern, a 1 –
este horario se repetirá todos los días.
Paso 2: En la pestaña de ciclo de trabajo, “Work Cycle”, haga clic con el botón derecho en la ventana para
que aparezca el editor de ciclos, “Edit Cycle Item”. Incluya un valor de 1 en la variable que especifica
que este recurso sí trabaja durante un período reducido, On Shift Value, y que empieza su jornada a las
10am y la acaba a las 6pm.
Paso 3: En la tapiz Facility, haga clic en el objeto CheckIn2. Cambie el tipo de capacidad de trabajo,
Capacity Type a WorkSchedule y el horario Work Schedule a SecondCheckInStation (Figura 3.8).
Horario de
Trabajo
Input@CheckIn
Llegada de
Pasajeros TRANSFERNODE en el que se
elige la fila más corta
Nuevo TRANSFERNODE
para elegir un mostrador Input@CheckIn2
que esté abierto
Pregunta 12: ¿Cuál es el tiempo medio de espera de un pasajero en el mostrador situado en la acera?
Pregunta 13: ¿Cuál es el tiempo medio de espera de un pasajero en el mostrador del terminal?
Pregunta 14: ¿Cuánto tiempo está trabajando el operario que está situado en el mostrador de la acera?
¿Porcentaje de utilización?
Pregunta 15: ¿Cuánto tiempo están trabajando los operarios que están situados en los mostradores
interiores? ¿Porcentaje de utilización?
Paso 6: Dése cuenta que en la simulación, hay pasajeros que están en fila cuando el mostrador CheckIn2
cierra porque acaba su jornada. Allí se quedan estancados; solucionaremos el problema en otro capítulo
más adelante.
En SIMIO, cuando la capacidad de un servidor se hace cero y todavía hay entidades que se están
procesando, se acabarán las operaciones. Los usuarios de Arena reconocerán esta situación como
una de las tres reglas de resolución de conflictos (“ignore”, wait, preempt). Si ésta no es la regla
deseada, necesitará implementar una regla adicional utilizando conceptos más avanzados, que
serán descritos más adelante.
Caminos con Desvíos, Tablas de Ritmos y Dependencias entre Entidades: Aeropuerto bis 23
Capítulo 4
Secuencias y Viajeros: Célula de Fabricación
Más opciones de modelización utilizando objetos básicos SOURCE, SERVER, y
SINK. Secuencias de entidades.
Uso de vehículos
Una pequeña célula de fabricación está compuesta por tres estaciones de trabajo en la que se procesan cuatro
piezas distintas. Las estaciones A, B, y C, se disponen de forma que las piezas sigan una ruta circular (Figura
4.1). Si una pieza cumple su último proceso en la Operación C, tendrá que ir a la Operación A y luego a la B
antes de dirigirse hacia la salida. Se desea realizar una simulación de una semana de 5 días, con un jornada
de trabajo diaria de 8 horas, para un total de 40 horas en una semana.
Llegada Salida de
de Piezas Dirección de Piezas
Movimiento
Cada una de los tipos de piezas (entity) presenta una ruta distinta de procesamiento. De hecho, no todas
tienen que pasar por todas las estaciones. Las secuencias se muestran en la Tabla 4.2.
Tabla 4.2: Secuencia por Pieza
Paso 1 2 3
Pieza 1 Operación A Operación C
Pieza 2 Operación A Operación B Operación C
Pieza 3 Operación A Operación B
Pieza 4 Operación B Operación C
La Operación B tiene dos máquinas, cada una con un tiempo de proceso que varía entre 5 y 11
minutos, con un tiempo más habitual de 9 minutos.
La Operación C se compone de dos máquinas que operan durante las cuatro primeras horas de cada
día y una máquina que lo hace durante las últimas cuatro horas. Cada una tiene un tiempo de proceso
que varía entre 2 y 11 minutos con una moda de 6 minutos.
Paso 1: Primero, cree el modelo en SIMIO utilizando cuatro fuentes, SOURCES, para cada una de las cuatro
entidades (arrastrando cuatro MODELENTITIES dentro del tapiz). Son necesarias cuatro fuentes de piezas
porque cada una tiene su propio proceso de llegada. Necesitaremos tres servidores, SERVERS (uno para
cada estación) y un único sumidero, SINK. Denomine cada objeto de forma que sean fácilmente
reconocibles (Figura 4.2).
Paso 2: Probablemente el mejor método para simular la circulación circular sea utilizar un nodo básico
BASICNODE, tanto en la entrada como en la salida de cada estación11. Esto permite a las entidades seguir
el patrón de las secuencias sin tener que añadir procesos no deseados.
Por ahora, le dejaremos pensar sobre cuál es la distribución más adecuada en función de estos parámetros.
Conectores
Nodo
Básico
Caminos
Paso 5: Cambie las propiedades de las fuentes de forma que incluyan la pieza y los patrones de llegada
correctos. Elegimos la distribución Exponencial, Normal, y Uniforme, respectivamente, para los tiempos
de llegada de las piezas 1, 2, y 3, incluyendo los parámetros proporcionados para cada caso. Para la Pieza
4, elegimos un tiempo entre llegadas constante de 70 minutos y en la propiedad lote, Entities Per Arrival,
introducimos un valor de 5.
Paso 6: Incluya las distancias entre estaciones que cubren cada uno de los cinco caminos. Tendrá que
especificar como “False” la propiedad Drawn To Scale para cada camino.
Paso 7: Utilice para el tiempo de proceso de cada estación la distribución Beta habitual en la técnica Pert de
control de duración de tareas, Pert (BetaPert). En general, se prefiere la distribución Beta a Triangular. Se
especifican las dos con los mismos parámetros (mínimo, moda, máximo), pero no son tan probables los
valores extremos, lo que suele representar más fiablemente los tiempos de proceso.
Paso 1: Especifique las capacidades de la Operación A y la Operación B como “1” y “2”, respectivamente.
Para la Operación C, necesitaremos añadir un horario que recoja los cambios en capacidad a lo largo de
la jornada.
Un TRANFERNODE para la entrada/salida de una estación romperá la secuencia interna de SIMIO en cuanto a los pasos de las piezas
si no es cuidadoso.
Seleccione las cuatro entidades utilizando la tecla Ctrl y especifique la velocidad simultáneamente para todas las entidades.
26 Modelización y Simulación: Libro de Prácticas con SIMIO
Paso 2: En la pestaña “Data”, seleccione “Schedules” en el panel izquierdo, y luego “Add Schedule”. Llame
al horario, work schedule, ScheduleForC y deje sin rellenar la propiedad de fecha de inicio, Starting
Date, que será identificada en las opciones del menú de ejecución, Run.
SIMIO repetirá el ciclo de trabajo tantas veces como días haya en el patrón de trabajo. Dado que
nuestra simulación empezará a las 12am y durará 40 horas, hemos de rellenar el campo “días” como
“1” en la propiedad Work Pattern y dejar que se repita el ciclo una vez pasadas 24 horas.
Señale ahora las cuatro primeras horas de la pestaña “Work Cycle” empezando a las 12am y haga clic
con el botón derecho para añadir un nuevo elemento en el ciclo de trabajo. Cuando aparezca la
ventana de diálogo, cambie la opción a On Shift con un valor de “2” y haga clic en OK. Señale
después las cuatro siguientes horas, añada un elemento, y cambie la opción a On Shift con un
valor de “1”. Repita este proceso para todo el día.
Paso 3: Vuelva a la pestaña “Facility” y asigne a la propiedad Capacity Type de la Operación C el valor
“WorkSchedule”, incluyendo ScheduleForC.
Según la configuración actual de nuestro modelo, las entidades se separarán en los nodos en función de pesos
y de la dirección del enlace. Sin embargo, deseamos que las piezas sigan una secuencia establecida de
estaciones. Queremos estar seguros que siguen una ruta circular hasta que lleguen al nodo que les dirige a la
estación apropiada. Para modelizar esta situación, utilizaremos las denominadas Tablas de Secuencias,
“Sequence Tables” (pestaña “Data”).
Paso 1: Haga clic en el botón con el que se añade una tabla, “Add Sequence Table”, y denomine la nueva
tabla como SequencePart1 para que corresponda con la primera pieza. Añada otras tres tablas, una para
cada una de las otras tres piezas.
Paso 2: Añada la secuencia de nodos que debe seguir la Pieza 1. Sólo es necesario incluir los nodos a visitar
así como la salida. Una vez que la secuencia está lista, siempre seguirá la ruta más corta hasta llegar al
primer nodo de la lista. La secuencia correcta para la Part1 se detalla en la Figura 4.313.
Asegúrese de
incluir la salida en
la secuencia
Vea que se especifican los nodos de entrada de los SERVERS y SINK en vez de los objetos.
Paso 5: Para cada uno de los 7 nodos, TRANSFERNODES (nodos de salida de cada fuente y estación), cambie la
propiedad de destino, Entity Destination Type, a “By Sequence”. Cuando por primera vez una entidad
pasa por uno de los nodos en que la opción es “By Sequence”, el nodo marca como destino de la entidad
el valor del indicador de la primera fila de la tabla de secuencias, SEQUENCE TABLE. Después de eso, cada
vez que una unidad pasa por un nodo de transferencia con destino “By Sequence”, el indicador de fila de
la tabla se incrementa en 1 y el destino de la entidad se marca como el siguiente nodo en la tabla14.
Pregunta 4: Al pasar por un BASICNODE, ¿cambiará el indicador de fila de una tabla de secuencias,
SEQUENCE TABLE?
Paso 6: Antes de ejecutar la simulación, puede ser apropiado cambiar los colores de cada una de las piezas
de forma que sea fácil distinguirlas en el modelo. También ayudará para verificar que siguen la secuencia
correcta. Ejecute la simulación durante 40 horas a un ritmo lento para cerciorarse de que las piezas
siguen la secuencia correcta.
Pregunta 5: Desactive las llegadas de todos los tipos de piezas menos de 1. ¿Sigue la secuencia correcta?
Podemos ahora aprender que en lugar de que dejen el sistema, las piezas han de ser transportadas en un
carrito hasta el almacén que está situado a 300 yardas. El carrito puede transportar un máximo de 3 piezas a
una velocidad de 4 pies por segundo. Después de descargar las piezas, ha de volver a recoger un nuevo lote
de piezas o esperar a que haya alguna para ser transportada. El carrito no tiene por qué estar lleno para
dirigirse al almacén, esto es, llevará las piezas que estén disponibles, en este caso, 1, 2 ó 3.
Paso 1: Borre el conector entre el objeto salida y el nodo básico anterior. Incluya un nodo de transferencia,
TRANSFERNODE, entre los dos. Llame a este nuevo nodo TransferCart. Conecte el BASICNODE al
TRANSFERNODE con un camino, PATH, de 10 yardas de longitud. Conecte el nodo de transferencia al
sumidero con un camino o PATH (asegurando que es bidireccional, bidirectional, de forma que el carrito
pueda moverse en ambas direcciones). Fije la longitud del camino en 300 yardas.
Paso 2: Arrastre dentro del tapiz un vehículo, VEHICLE de la [Standard Library]. Los cambios deben
asemejarse a lo mostrado en la Figura 4.4.
14
Si el indicador de fila corresponde a la última fila y la entidad entra en un TRANSFERNODE con un destino “By Sequence”, el
indicador de fila volverá a tomar el valor 1.
28 Modelización y Simulación: Libro de Prácticas con SIMIO
Parking del Cart
Figura 4.5: Especificando el Nodo para que las Entidades Utilicen un Transportador
Paso 4: Use la Figura 4.6 como guía para que el vehículo Cart circule con la velocidad deseada, Initial
Desired Speed, 4 pies por segundo, así como su capacidad de transporte, Ride Capacity, a 3. Recuerde
también que debe asignar el sitio donde debe aparcar un vehículo, Initial Node(Home), como
TransferCart. Cambie ahora la propiedad Idle Action a “Park At Home”, con lo que el vehículo se
dirigirá a su garaje cuando no hay entidades que hayan lanzado peticiones de transporte. Si no lo indicara
así, el vehículo se mantendría en la salida hasta recibir una nueva petición. Aumente también el tamaño
del lugar donde las entidades esperan a ser recogidas (Figura 4.4).
Paso 7: El modelo no muestra cuántas piezas están esperando al carrito en el nodo de transferencia, por lo
que será útil ver cuántas se encuentran esperando en cualquier momento de la ejecución. Podemos añadir
la denominada Fila Separada, “Detached Queue.”
Paso 8: En la pestaña de “Animation”, haga clic en “Detached Queue.” Aparecerá un cursor en el tapiz
principal. Haga clic con el botón izquierdo en el sitio donde quiere que empiece la fila y después con el
derecho en el lugar que quiere que finalice (antes de hacer clic con el botón derecho para localizar el
final de la fila, puede continuar haciendo clic con el botón izquierdo para añadir más vértices). Como se
aprecia en la Figura 4.7, dibuje la fila en forma de “L”. De otra forma, una entidad parece que está
intentando entrar en el nodo y al sobreponer “L” se muestran todas las entidades que están esperando ser
transportadas.
Fila Separada
para las entidades
que esperan para
ser recogidas
La fila de aparcamiento sólo es para la animación, puesto que el transportador está físicamente en el nodo incluso si no se muestra
en pantalla.
30 Modelización y Simulación: Libro de Prácticas con SIMIO
Haga clic ahora en la cola y en la ventana de propiedades cambie Queue State a
TransferCart.RidePickupQueue, donde TransferCart es el nombre del nodo de
transferencia en donde se recogen las piezas acabadas. Su nombre puede ser diferente.
Pregunta 6: ¿Cuál es el porcentaje de utilización del carrito durante las 40 horas que dura la repetición?
Los horarios y patrones de trabajo, Work schedules, las secuencias, sequences, las colas
separadas, detached queues, y los transportadores o vehículos, presentan en SIMIO
características similares a las de Arena.
La animación en SIMIO garantiza un vista atractiva, mucho más realista que la de Arena. El
uso de vehículos en SIMIO es fácil de implantar y más fácil de usar que en Arena.
Las tarjetas de memoria contienen unos chips de memoria insertados mediante una operación de ensamblaje,
con capacidad 4. Cada tarjeta de memoria requiere cuatro chips. Las tarjetas de memoria, así como los chips,
llegan de forma aleatoria, por lo que el ensamblador espera a tener cuatro chips del mismo tipo y una tarjeta
antes de realizar el ensamblado. Después, la tarjeta de memoria ensamblada se manda a una de tres
estaciones de empaquetado, cada una con un operario. Las tarjetas se mandan a la fila de empaquetado con
un menor número de unidades esperando. Estas características numéricas se resumen en la Tabla 5.1.
Paso 1: Cree un nuevo modelo con dos fuentes, SOURCES, una para tarjetas y otra para chips de memoria.
Añada dos entidades, MODELENTITIES, en el modelo, una denominada MemoryBoard para tarjetas, y
otra denominada Memory para chips.
Paso 2: Utilice distintos símbolos para diferenciar las entidades (Figura 5.1). Puede utilizar sus propios
símbolos si hace clic en el botón “New Symbol” en la sección “Create” de la pestaña “Project Home”.
Cuando cree un símbolo nuevo, debe especificar su altura, “height”, en metros. En el caso mostrado en
la Figura 5.1, se ha creado un rectángulo con una altura de 0.5 metros16. No hay que preocuparse en
Las tarjetas de memoria no son de 0.5 metros de ancho pero se ha hecho así para facilitar su visión en 3-D.
32 Modelización y Simulación: Libro de Prácticas con SIMIO
exceso sobre las especificaciones exactas ya que el símbolo puede ajustarse manualmente después de
hacer clic en el símbolo de MemoryBoard y utilizando nuestro nuevo símbolo (haciendo clic en
SYMBOL1 y en Symbols→Project Symbols).
Paso 3: Para los chips de memoria, añada un símbolo adicional17, coloreando este segundo símbolo con un
color diferente para diferenciarlos en el sistema.
Paso 6: Volviendo a la pestaña “Facility”, haga clic en MemoryArrivals. Para asignar la nueva variable
ChipType, se especificará una asignación, Before Existing State Assignment, de forma que se
otorgue un valor a ChipType antes de que la entidad abandone la fuente. Haga clic en la opción que
se encuentra a la derecha de Before Exiting State Assignments para que aparezca el editor de
propiedades, “Repeating Property Editor”, y añada la siguiente propiedad:
Paso 7: Ahora, agrupe (batch) 4 miembros en el COMBINER mediante la especificación de Match Members
como una regla de agrupación, Matching Rule, con ModelEntity.ChipType como una propiedad
Member Match Expresión (Figura 5.2).19
Utilice este
TRANSFERNODE
Paso 10: Cuando una tarjeta ya está ensamblada, puede seleccionar uno de tres destinos: Input@Packer1,
Input@Packer2, o Input@Packer3. Cree un nuevo nodo LIST (pestaña “Definitions”) y denomínelo
LstPackers, empezando con Input@Packer1 (Figura 5.4).
Los combinadores pueden casar entidades entre sí, casar miembros entre sí o casar ciertos miembros con padres.
34 Modelización y Simulación: Libro de Prácticas con SIMIO
Selection Expression: Candidate.Node.NumberRoutingIn+
Candidate.Server.InputBuffer.Contents.NumberWaiting+
Candidate.Server.Processing.Contents.NumberWaiting20
Pregunta 1: Examine la expresión de selección, Selection Expression, y advierta que se compone de tres
componentes. ¿Qué representan cada uno de ellos?
Paso 12: Especifique la forma de trasladarse desde las empaquetadoras a la salida utilizando una propiedad
del modelo, “Model Property”, que se encuentra en la pestaña “Definitions”. Incluya una propiedad
numérica de tipo real, “Real” , elegida del menú “Standard Property” y opción TimeToExit, y
especifique su valor por defecto, Default Value, como “3.5”, con las unidades por defecto en minutos
(Unit Type, Time; Default Units, Minutes).
Paso 13: Ahora ya puede especificar el tiempo de desplazamiento, Travel Time, de cada uno de los
caminos hasta la salida21 como , esto es, con una propiedad de referencia, reference
property. Si desea cambiar ahora el tiempo de desplazamiento de los tres caminos a la vez, sólo hay que
cambiar la nueva propiedad.
Paso 14: Guarde el modelo y ejecútelo durante 10 horas, y conteste a las siguientes preguntas.
Supongamos que es necesario cambiar el ritmo de operación de Packer1 en función del número de tarjetas
que están esperando (tamaño de la fila). Específicamente, la eficiencia de la empaquetadora es sólo del 80%
cuando no hay tarjetas esperando, 90% cuando hay 1, y 100% cuando hay al menos dos.
Paso 1: Necesita ahora incluir una tabla de eficiencias, “efficiency” table, para determinar el tiempo de
proceso. Esta tabla puede ser también modelizada como una tabla “Function” en SIMIO (dicho de otra
forma, f(x)). En la pestaña “Data”, añada una tabla discreta, “Discrete Function Table”, cuyos valores
son 0.8 cuando x = 0, 0.9 cuando x = 1, 1 cuando x = 2, y 1 cuando x = 100 (Tabla 5.2).
La designación de candidato, Candidate, es una referencia que toma como valor la identidad del objeto al que está haciendo
referencia. Aquí hace referencia al nodo hacia el que la entidad está siendo dirigida y la fila específica de entrada, INPUTBUFFER, o de
procesamiento, PROCESSING, de la estación que está al final del camino.
Seleccione a la vez los tres caminos y después haga click con el botón derecho en la propiedad Travel Time y seleccione la nueva
propiedad de referencia TimeToExit.
Recuerde que la tabla interpola para valores que se encuentren entre los valores especificados.
Denomine Efficiency a la tabla.
Random.Triangular(3,5,8)/
Function.Efficiency[Packer1.InputBuffer.Contents.NumberWaiting]
Pregunta 5: ¿Por qué dividimos el tiempo original del proceso entre la eficiencia?
Paso 3: Quisiéramos estar seguros de que nuestra función “eficiencia” está funcionando. Para comprobarlo,
utilizaremos un gráfico de estado, “Status Plot”, que se puede encontrar en la pestaña “Animation”.
Utilice las siguientes especificaciones para el gráfico.
Function.Efficiency[Packer1.InputBuffer.Contents.NumberWaiting]
Paso 1: Arreglemos primero la animación de la tarjeta de memoria de forma que parezca que los chips están
pegados. Haga clic en el símbolo de MEMORYBOARD y añada una fila del tipo BATCHMEMBERS que está
incluida en “Attached Animation” en el menú “Draw Queue”. Posiciónela encima del MEMORYBOARD
como se muestra en la Figura 5.6.
BATCHMEMBERS
Paso 2: Utilicemos el color de las tarjetas para designar y diferenciar entre los dos tipos. Para hacer esto,
haga clic en la entidad MEMORY y después en “Add Additional Symbol” en la sección “Additional
Symbols” dentro de la pestaña Symbols. Puede colorear un símbolo en rojo y el otro en verde mediante la
simple selección de un símbolo, activándolo como “Active Symbol”, y cambiándolo de color. Fíjese que
los dos símbolos han sido numerados como 0 y 1 (no 1 y 2).
Paso 3: También se puede asignar colores a los diferentes tipos de chip. Seleccione la fuente
MemoryArrivals. Haga clic en el recuadro que se encuentra a la derecha de Before Exiting State
Assignments, dado que queremos asignar el color antes de que la entidad se vaya de la fuente. Se abre
entonces el editor de propiedades “Repeating Property Editor”. Se debe añadir una variable de estado
adicional con las características siguientes:
El valor de una variable de estado, “state variable”, en contraposición al de una propiedad, puede
ser modificado durante la simulación, y el dibujo de una entidad se trata en SIMIO como si fuera
una característica de la entidad (lo que a veces se denomina como un atributo de la entidad).
Paso 5: Supongamos que queremos que el símbolo que sale de la estación de empaquetado parezca un
“paquete”. Se puede realizar la animación de diversas formas. Una forma fácil es utilizar una asignación
Recuerde que la tecla “h” hace aparecer instrucciones sobre cómo mover los objetos tanto en 2D como en 3D, así como ideas
sobre cómo manipular objetos. Presionando la tecla “h” otra vez hace desaparecer las instrucciones.
Puede que tenga que experimentar con el valor. La idea es cambiar la altura, “height”, de la tarjeta de
memoria de forma que encapsule los chips para que no se vean (se esconde entonces los miembros
del lote dentro de la tarjeta).
Paso 6: Ejecute el modelo y ajuste la altura hasta que el icono que sale de la empaquetadora parezca un
paquete. Tendrá que realizar el mismo cambio en el resto de empaquetadoras.
Paso 8: Guarde el modelo y ejecútelo durante un período de 10 horas y conteste a las preguntas siguientes.
Paso 1: Considere primero la variable eficiencia. Para calcular su valor, tenemos que definir una variable de
estado. En la pestaña “Definitions”, seleccione “States” y haga clic en “Discrete State” para definir una
nueva variable Packer1Efficiency.
No confundir una variable de estado, “state variable”, con una estadística de estado, “state statistic”.
38 Modelización y Simulación: Libro de Prácticas con SIMIO
Pregunta 15: Existen diversas variables de estado, pero la única discreta es la relevante. ¿Qué hay de
discreto en los cambio en eficiencia?
Paso 2: Para garantizar que Packer1Efficiency proporciona el valor correcto, modifiquemos las
asignaciones, “State Assignments”, en Packer1. En particular, hagamos la siguiente asignación al entrar
en la estación, On Entering:
Paso 3: Finalmente, necesitamos definir la estadística del tipo estado, “State Statistic”, lo que podemos
realizar desde la pestaña “Definitions”, pero en la sección de elementos, “Elements”. Denominémosla
Packer1Utilization y usemos Packer1Efficiency como nombre de la variable de estado, State Variable
Name.
Paso 5: Obtengamos también estadísticas sobre el tiempo de permanencia en el sistema tanto de las tarjetas
de memoria como de los chips. Una vez más, hay diversas formas de hacer esto. Aunque piense que tiene
que proporcionar información adicional a SIMIO, este es un caso en el que podemos ayudarnos en la
forma en que SIMIO calcula estadísticas. Recuerde que automáticamente se obtiene el tiempo en el
sistema de las entidades que cruzan el sumidero o salida. Utilizaremos esta forma de modelizar.
Paso 6: Para obtener resultados de las tarjetas y los chips, podemos separarlos y mandarlos a salidas distintas
– y hacerlo sin cambiar las estadísticas habituales. Nuestro enfoque se muestra en la Figura 5.7.
Miembros
separados
Figura 5.7: Separando Entidades
Se sustituye el sumidero, SINK, por un separador, SEPARATOR, de la [Standard Library], para que ayude
a separar los “padres” de los “miembros”. Los miembros se separan y se mandan a diferentes salidas.
Los distintos objetos se conectan con conectores, CONNECTORS.
La separación de miembros se basa en pesos, “Selection Weight.” El peso para las RedLeaves es:
ModelEntity.ChipType==1. Y para las GreenLeaves es: ModelEntity.ChipType==2.
Las funciones y las gráficas de SIMIO se asemejan a las de Arena. En cambio, las capacidades de
animación de SIMIO son claramente mejores.
El cálculo de estadísticas para variables de estado en SIMIO es similar al usado en Arena para las
variables que dependen del tiempo. El cálculo de estadísticas basadas en observaciones en SIMIO
no puede ser realizado en un módulo como en Arena. Sin embargo, como veremos en el siguiente
capítulo, el uso de procesos puede fácilmente adaptarse para obtener este tipo de información.
Típicamente, los procesos se invocan mediante acciones de los objetos durante la simulación o por eventos
que el modelizador diseña. Escribir un proceso es similar a crear un flujograma estilizado, con excepción de
que los componentes del flujograma son etapas lógicas como Asignar, Decidir, Contar, Transferir, Apresar,
Retrasar, Liberar ... La ejecución de un proceso se realiza con una señal, ficha o “token.” Las fichas (o fichas)
provocan la realización de los pasos del proceso para un objeto, normalmente, el objeto que lanza la ficha o
aquel cuyo comportamiento se ve modificado por el proceso.
Casi todos los objetos de SIMIO tienen disparadores, “Add-On Process Triggers”. Estos disparadores hacen
que se ejecuten procesos externos, esto es, procesos arbitrarios diseñados por el propio usuario para cambiar
o expandir el comportamiento de un objeto (por ejemplo, SERVER). La otra opción sería clonarlos o hacer
subclases de los objetos (vea el Capítulo 18 para más información sobre subclases).
En el Capítulo 5, se cambiaron ciertas características o atributos de las entidades. En un caso, los distintos
tipos de una entidad (chips) se colorearon para facilitar su diferenciación, y, en un segundo caso, se
incrementó la altura de otra entidad (tarjeta de memoria) para mejorar la animación del modelo. En ambos
casos, cambiamos los valores de variables de estado, “state variables”, utilizando las propiedades de
asignación de estados, “State Assignments”. Verá que las posibilidades de realizar este tipo de asignaciones
son limitadas, mientras que son más numerosas si se utilizan disparadores. Más aún, los “State Assignments”
sólo pueden asignar valores, mientras que un proceso puede incorporar lógica más compleja que las
asignaciones simples.
Paso 1: Veamos cómo se pueden replicar las asignaciones, “State Assignments”, utilizando disparadores.
Abra el modelo usado en el Capítulo 5. Primero, elimine los “State Assignment” de MemoryArrivals
(utilizando el editor de propiedades).
Pregunta 1: ¿Qué disparadores están disponibles para los objetos fuente, SOURCE?
Pregunta 2: ¿Cuándo se pueden utilizar “State Assignments” con los objetos fuente?
Paso 3: Elija el disparador que se dispara cuando sale una entidad, “Exited”. Haciendo doble clic en este
disparador se creará un nuevo proceso denominado MemoryArrivals_Exited y se le remitirá a la
pestaña de procesos, “Processes”. Verá un flujograma con un comienzo, “Begin”, y un final, “End”
(Figura 6.1). Haciendo clic en uno de los pasos del proceso, puede insertarlo en el flujograma, que se
ajustará automáticamente.
Pregunta 3: Enumere alguno de las etapas disponibles que se pueden utilizar para crear un proceso.
Paso 6: Borre la asignación “On Entering” en Packer1. Cree un disparador “Entered” e introduzca un
proceso Assign que hace lo siguiente:
En el modelo del Capítulo 5, la asignación utilizada para cambiar la altura de las tarjetas de memoria para
que la entidad se asemejara a un paquete compacto fue realizada en cada empaquetadora. Por supuesto, este
enfoque puede ser duplicado mediante la creación de un disparador “Exited” para cada una de las
empaquetadoras. Sin embargo, la misma lógica de asignación de la altura ha de ser incluida en cada uno de
los tres disparadores “Exited”. Creemos entonces un proceso que pueda se referenciado por cada una de las
Paso 1: En la pestaña “Processes”, haga clic en el botón de creación de un proceso, “Create Process”,
denominando el nuevo proceso como Packaged. Añada una etapa Assign al flujograma con las
siguientes asignaciones.
Paso 3: Vaya al disparador “Exited Add-On Process Trigger” de cada uno de las empaquetadoras. En lugar
de crear uno nuevo, seleccione el disparador Packaged de la lista.
Recuerde que las estadísticas basadas en la observación se denominan TALLY en SIMIO. Estas estadísticas se
recogen como observaciones durante la ejecución de una simulación. Como ejemplos más habituales se
pueden citar los tiempos de permanencia en una fila, los tiempos totales de permanencia en el sistema o los
tiempos de ciclo. En general, son estadísticas cuyas observaciones son intervalos de tiempo.
Paso 1: Consideremos que son necesarias las estadísticas TALLY del tiempo que están tanto las tarjetas de
memoria como de los chips hasta que empiezan a ser empaquetadas en Packer1. Necesitamos definir
primero un nuevo elemento. En la sección “Definitions→Elements”, haga clic en “Tally Statistic” para
crear una nueva variable denominada SystemTimePacker1.
Paso 2: Necesitamos definir el proceso de recogida de observaciones. Inserte una etapa Tally en
Packer1_Entered (Figura 6.2). En este caso:
Figura 6.2: Utilizando una Etapa Tally para Controlar el Tiempo antes de la Empaquetadora 1
Pregunta 6: ¿Podría ser el valor simplemente ModelEntity.TimeInSystem?
TimeNow es la hora actual del reloj de la simulación y la función TimeCreated devuelve la hora en que la entidad fue creada.
Pregunta 7: ¿Cuál es el tiempo que tardan tanto las tarjetas como los chips desde la entrada hasta el
comienzo de la operación de empaquetado 1?
Paso 4: Suponga que ahora queremos saber el tiempo que emplea una entidad ensamblada desde que
empieza en la estación Packer1 hasta la salida después de 4 horas de simulación. Tenemos que modificar
nuestro proceso para que sólo se obtengan las observaciones referidas a las tarjetas pasadas las primeras
cuatro horas.
Paso 5: Modifique nuestro proceso “Packer1_Entered” y añada una etapa decidir, Decide, antes de Tally
(Figura 6.3). Esta etapa Decide es similar a una función SI en Excel donde si una condición es
verdadera el proceso continuará por una rama del flujograma, la rama “True”, y en caso contrario seguirá
por la otra rama, “False”. La propiedad que marca el tipo de decisión, Decide Type, debe basarse en una
condición, “ConditionBased”, con una expresión Expression que indique: TimeNow > 4.
Pregunta 8: ¿Qué tiempo de permanencia obtiene para las tarjetas y los chips desde que llegan hasta el
momento en que empiezan a ser empaquetados en Packer1?
Paso 7: Es posible que desea usar etapas de proceso para reemplazar los cambios en la modelización que se
realizaron sobre el modelo del Capítulo 5 de forma que se obtengan estadísticas de tiempo en el sistema
por tipo de chip (verde o rojo) y para las tarjetas.
Conecte las tres operaciones de empaquetado con el sumidero de forma similar a lo que se hizo en la
Figura 5.3.
Paso 8: Definamos tres nuevas estadísticas TALLY (recuerde que son elementos, “Elements”), denominadas
BoardTimeInSystem, RedTimeInSystem, y GreenTimeInSystem.
Cuando borra un nodo, desaparecen todas sus conexiones. Puede conectar nodos rápidamente si aprieta las teclas Shift y Ctrl, y
hace clic en el nodo de origen y arrastra el conector hasta el destino. Tendrá que seleccionar el tipo de conexión.
44 Modelización y Simulación: Libro de Prácticas con SIMIO
Figura 6.4: Proceso de Destrucción de Entidades
Ha sido necesario incluir una etapa previa, para desagrupar, UnBatch, las entidades. Ha sido elegida
del panel de etapas y del conjunto de todas las etapas, “All Steps (A-Z)”. La etapa UnBatch
funciona como un objeto separador, SEPARATOR, excepto que se utiliza para desagrupar los “padres”
y los “miembros” y dirigirlos por las ramas correctas.
Pregunta 9: ¿Cuáles son las ventajas y las desventajas de este enfoque frente al original donde el modelo
físico se cambió para obtener estadísticas?
Pregunta 10: ¿Qué otras etapas que aparecen en la lista “All Steps (A-Z)” no aparecen en las etapas más
comunes, “Common Steps”?
Paso 10: Guarde y ejecute el modelo de forma que observe si hay diferencias con el modelo anterior.
Pregunta 11: ¿Cuánto tiempo están las tarjetas de memoria en el sistema (desde la entrada a la salida)?
Pregunta 12: ¿Cuánto tiempo están los chips verdes en el sistema (desde la entrada a la salida)?
Pregunta 13: ¿Cuánto tiempo están los chips rojos en el sistema (desde la entrada a la salida)?
Paso 11: Los resultados deben ser comparables con los obtenidos en el capítulo anterior.
Pregunta 14: Dado que los resultados son comparables, ¿qué enfoque es más fácil para usted?26
La gente suele intentar no utilizar procesos al principio, especialmente si pueden realizar los modelos sin ellos (esta es parte de la
nueva forma de pensar que require SIMIO). Sin embargo, encontrará que el tiempo invertido en aprender a utilizarlos vale la pena en
cuanto se enfrente a sistemas más complicados. El resto de capítulos ilustrará por qué los procesos son tan esenciales.
A veces la capacidad no se reduce a objetos como SERVERS o COMBINERS, que se basan en sus capacidades
internas. En cambio, la limitación puede no estar fijada en el sentido de que la capacidad está situada en una
localización concreta. Por ejemplo, supongamos que la operación de ensamblaje de las tarjetas de memoria
requiere de un accesorio o útil para ensamblar los chips en la tarjeta de memoria. Además, el mismo útil se
utiliza para transferir la unidad ensamblada hasta empaquetado. Para cada operación de ensamblaje, el útil
debe acercarse desde la empaquetadora, para lo que se tarda unos 3 minutos. Asumamos que existen 10 útiles
idénticos disponibles para la doble operación ensamblaje-empaquetado.
Paso 1: Primero, arrastre y deje un objeto recurso, R ESOURCE27 en el tapiz, quizá debajo del combinador,
COMBINER como se nuestra en la Figura 6.5. Llame al recurso Fixture y asígnele una capacidad inicial,
Initial Capacity, de 10 (no modificaremos la capacidad en este caso).
Es un recurso
RESOURCE fijo
Pregunta 15: ¿Cuál es la diferencia en el tiempo en el sistema de tarjetas y chips si se comparan los
resultados de los dos escenarios (10 frente a 20 útiles)?
Las bondades de los procesos lógicos de SIMIO es una de sus características sobresalientes, pues
permite extender y particularizar los modelos de forma única y poderosa. Su uso puede requerir
un cambio de mentalidad en la forma de enfocar la simulación.
En Arena los bloques y los elementos de SIMAN corresponden someramente con las etapas y los
elementos en SIMIO. Sin embargo, en Arena los módulos han sido compuestos a partir de los
componentes de SIMAN, por lo que todo viene de SIMAN. En SIMIO, los objetos son
totalmente nuevos y existen varias definiciones y procesos disponibles para alterar el
comportamiento de los modelos estándar de SIMIO. El potencial de estas características de
SIMIO no se encuentra en Arena/SIMAN.
Se pueden realizar muchos tipos de modelizaciones diferentes utilizando recursos, una cualidad
que exploraremos en otros capítulos (Capítulo 13, Capítulo 14, Capítulo 16, etc.).
Recuerde el enunciado del problema del Capítulo 4 donde el objetivo era modelizar cuatro tipos de piezas
que pasaban por tres estaciones: A, B, y C. Las estaciones estaban situadas de forma que el patrón de
movimiento es circular y unidireccional (Figura 7.1). Por ejemplo, si se termina una pieza en la Operación C,
tendrá que recorrer el camino hasta la Operación A, y luego hasta la Operación B, antes de que puede
dirigirse hasta la salida. Queremos simular un período de 40 horas. Las piezas se mueven a una velocidad de
2 millas por hora.
Llegada Salida de
de Piezas Travel Direction Piezas
También en el Capítulo 4, las piezas llegaban desde cuatro fuentes distintas, cada una con su propio patrón de
llegadas. Algunas veces, es necesario modelizar utilizando una única fuente, aunque haya cuatro tipos
distintos de piezas, cada uno con un porcentaje sobre el total (Tabla 7.2).
Paso 1: Abra en primer lugar el modelo del Capítulo 4, guárdelo con otro nombre, y borre todas las fuentes
menos una (Figura 7.2).
Única Fuente
Nodo básico
de Salida
Paso 3: En la pestaña “Data”, haga clic en SequencePart1 que está asociada con la Pieza 1. Debido a que
los tiempos de proceso pueden seguir cualquier distribución (o expresión válida), añada una columna
Tiempos de Proceso Específicos por Pieza y Fuentes Únicas: Célula de Fabricación bis 49
nueva para incluir expresiones denominada ProcessingTimes a partir del menú Standard Property.
Asegúrese de que la columna tiene las unidades apropiadas haciendo que Unit Type sea “Time” y las
unidades por defecto, Default Units, “minutes.”
Paso 4: Fije el tiempo de proceso para StationA según la función Pert, Random.Pert(2,5,8), el de
StationC según Random.Pert(2,6,11)y finalmente Exit en 0 (Figura 7.3).
Paso 6: Para que una única fuente sea capaz de producir múltiples tipos de entidades, se ha de crear una
nueva tabla de datos para especificar el tipo de pieza de las entidades así como el mix de producto en
porcentaje. Añada una tabla nueva denominada TableParts con cuatro columnas (Tabla 7.4).
A continuación, especifique cada entidad como una nueva fila con la información correspondiente
(Tabla 7.5).
Paso 7: Para que se pueda utilizar tiempos de proceso dependientes del tipo de pieza, cambie las expresiones
de tiempo de proceso en las tres estaciones de forma que se lean los valores
TableParts.ProcessingTime. Más en concreto, esta lógica hace que el tiempo de proceso se lea de la
columna ProcessingTime de la tabla de datos, TableParts. Como cada pieza se mueve en función de las
filas de su propia tabla de secuencias, obtendrá el tiempo de proceso de la fila correspondiente. La
propiedad es ahora una propiedad del tipo referencia
Paso 8: Para generar múltiples tipos de piezas de la misma fuente, el tipo de entidad, Entity Type, necesita ser
modificado para incluir cada tipo de entidad. En la fuente, SOURCE, especifique que el valor de Entity
Type se busque en TableParts.PartType. Esta especificación permite que Entity Type pueda ser de
cualquiera de los tipos especificados en la tabla.
Paso 9: Haga que el tiempo entre llegadas sucesivas de piezas se comporte según una distribución
Exponential con una media 10 minutos.
Paso 10: Para determinar qué tipo de pieza se crea, se debe incluir en las propiedades del objeto los
porcentajes del mix de productos. La fuente, SOURCE, tiene una categoría de propiedades para asignar
valores de una tabla, “Table Reference Assignment”. Existe la posibilidad de realizar dos asignaciones:
antes de la creación de una entidad, Before Creating Entities, o justo después de haberlas creado, On
Created Entity. En este caso, queremos realizar la asignación antes de la creación deforma que se cree el
tipo de pieza de forma correcta (Figura 7.4).
Tabla de
Piezas
Fila
Paso 11: La asignación a una tabla de referencia se puede realizar de forma alternativa utilizando un
disparador, “Add-On Process Triggers”, en el objeto fuente, SOURCE. El proceso que se dispara puede
añadir flexibilidad (aunque no sea necesario en este ejemplo), puesto que el objeto dispone de cuatro
disparadores distintos (Tabla 7.6).
Tiempos de Proceso Específicos por Pieza y Fuentes Únicas: Célula de Fabricación bis 51
fuente
Paso 12: El tipo de pieza se tiene que determinar antes de crear la entidad (Creating Entities). Para llamar a
este proceso de creación, Creating Entities, haga doble clic en la etiqueta para crear un proceso, o utilice
la pestaña “Processes”. Esta acción añadirá un proceso SrcParts_CreatingEntities así como que hará
que “Processes” sea la pestaña activa.
Paso 13: Hay que asociar también una fila de la tabla de piezas a la entidad que se va a crear. Incluya la etapa
Set Table (listada en la sección All Steps (A-Z)), arrastrándola entre Begin y End (Figura 7.5).
Paso 15: Ejecute la simulación por un período de 40 horas a velocidad lenta para asegurarse de que las piezas
siguen su secuencia correctamente y conteste a las preguntas siguientes:
Suponga ahora que la transferencia entre las estaciones de la célula de fabricación se realiza con un carril de
transferencia, que es una cinta transportadora continua, continuous conveyor, posiblemente en circuito
cerrado, que tiene estaciones de carga/descarga. Cuando una pieza se sitúa en una de estas estaciones, la línea
entera se para hasta que la pieza se coloca sobre ella o se retira de ella. Estas operaciones tardan entre 0.5 y
1.5 minutos.
SIMIO dispone de dos formas de modelizar las cintas: acumuladoras, accumulating, y no acumuladoras, non-
accumulating. Las cintas acumuladoras permiten que las piezas se junten al final, puesto que la cinta se sigue
moviendo aunque no pueda descargar en una estación. Como ejemplo, se pueden mencionar las cintas de
rodillos. Una cinta no acumuladora se debe parar hasta que la operación de carga/descarga finaliza. Como
ejemplo, se puede mencionar los sistemas aéreos con balancinas que llevan piezas durante el ensamblaje de
coches.
Las cintas en SIMIO no tienen estaciones de carga/descarga, por lo que el carril de transferencia tendrá que
ser modelizado como una serie de cintas individuales. Como el carril se para durante las operaciones, el
concepto de no acumulación es el que hay que emplear, aunque las cintas deben coordinarse entre sí.
Paso 1: Cambie todos los caminos interiores del modelo a cintas. Seleccione un camino y acceda haciendo
clic con el botón derecho al submenú Convert To Type. Para mejorar visualmente el modelo, añada
decoradores de caminos para las cintas (Figura 7.7) a través de la pestaña “Path Decorators”.
Paso 2: Modifique también los símbolos de las piezas de forma que sus dimensiones sean de 1 un metro de
ancho por 1 metro de largo por medio metro de alto. Seleccione las cuatro piezas y cambie sus
dimensiones utilizando la propiedad General→Size and Location. Tendremos que ser un poco más
específicos sobre estas dimensiones cuando dimensionemos también la cinta. Hemos creado estos
símbolos utilizando la sección “Create” de la pestaña “Project Home”, y haciendo clic en “New Symbol”
y seleccionando “Create a New Symbol”. Cuando estemos creando el símbolo, debemos prestar atención
a su tamaño (la cuadrícula está en metros).
Nuevos Símbolos
para las piezas
Cintas
Tiempos de Proceso Específicos por Pieza y Fuentes Únicas: Célula de Fabricación bis 53
Paso 4: En la propiedad de alineamiento de la entidad, Entity Alignment, elija la opción Cell Location. Esta
opción equivale conceptualmente a dividir la cinta en celdas. Las piezas que van sobre la cinta han de ser
posicionadas sobre una celda. Así, fije el número de celdas en el número asociado a la longitud de la
cinta. Si no es así, y selecciona la opción Any Location, una pieza puede ir sobre la cinta en cualquier
lugar, incluso interfiriendo con otras.
Paso 5: Repita el paso anterior para cada cinta que conforma el carril de transferencia.
Paso 6: Dado que el carril de transferencia está formado por muchas cintas en vez de una, hay que
sincronizarlas de forma que cuando las piezas se cargan/descargan de una de las cintas, el carril entero
(el conjunto de cintas) se para hasta que acabe la operación.28 Defina primero una variable discreta de
estado (a partir de la pestaña “Definitions”) y denomínela como número de nodos funcionando,
NumberNodesWorking. Esta variable representará el número de nodos que están o colocando o
retirando piezas del carril. Cuando esta variable es 0, el carril se moverá, y cuando la variable de estado
sea al menos 1, el carril entero se pasará.
Paso 7: Añada ahora un proceso Nuevo (a través de la pestaña “Processes”, seleccione “Create Process”).
Llámelo On_Off_Entered. Este proceso consistirá en las etapas incluidas en la Figura 7.8.
La sincronización no es exacta dado que la cinta aguas abajo no conoce que una celda de la cinta aguas arriba está ocupada y que
piezas que están en una celda pueden entrar en conflicto con otras piezas que llegan de una cinta anterior.
54 Modelización y Simulación: Libro de Prácticas con SIMIO
La etapa Decide se basa en la condición de que el número de nodos en espera es 0,
NumberNodesWaiting == 0, lo que significa que no hay otros nodos cargando o descargando
sobre el carril.
La última etapa Assign hace que las cintas vuelvan a arrancar. SIMIO guarda internamente todos
las velocidades en metros por hora, por lo que una asignación de 0.5 se guardará como 0.5 metros
por hora. Si la variable de estado tiene unidades distintas, éstas se pueden especificar vía
asignaciones. Asegúrese de que cambia las unidades a metros por segundo o una especificación de
0.5 metros por segundo será tratada como 0.5 metros por hora 29. Puede convertir 0.5 metros por
segundo en 1800 metros por hora para que sean unidades consistentes con la interpretación de cómo
SIMIO realiza las asignaciones, así como evitar tener que hacer la conversión todas las veces. La
Figura 7.10 muestra cómo se arranca el carril.
Tabla 7.7: Todos los Disparadores que Deben ser Incluidos en la Lógica de Carga/Descarga
Disparador de Procesos A qué Objeto se Asocia
Exited Output@SrcParts (TRANSFERNODE)
Entered Input@StationA (BASICNODE)
Exited Output@StationA (TRANSFERNODE)
Entered Input@StationB (BASICNODE)
Exited Output@StationB (TRANSFERNODE)
Entered Path7 (PATH): El camino que sale de la célula.
Entered Input@StationC (BASICNODE)
Exited Output@StationC (TRANSFERNODE)
Pregunta 6: ¿Por qué no usar simplemente el proceso On_Off_Entered en el BASICNODE de
entrada/salida de la cinta?
Paso 9: Ejecute la simulación durante 40 horas a velocidad lenta para asegurarse de que las piezas siguen de
forma correcta la secuencia y conteste a las siguientes preguntas.
La presunción de un tiempo interno representa una elección de eficiencia en contra de la facilidad de uso.
Tiempos de Proceso Específicos por Pieza y Fuentes Únicas: Célula de Fabricación bis 55
Pregunta 7: ¿Cuánto tiempo está cada tipo de pieza en el sistema?
Los fallos son parte de la mayoría de sistemas mecánicos. SIMIO proporciona algunos métodos relativamente
simples para modelizar estos fallos o roturas dentro de la sección de fiabilidad, “Reliability Logic”, de los
objetos SERVER (y también de otros objetos). Por supuesto, en el caso de un carril de transferencia, se necesita
parar el carril cuando una de las máquinas o estaciones esté siendo reparada.30
Asumamos que la Operación C, StationC, es poco fiable. En particular, asumamos que el tiempo entre fallos,
MTBF (Mean Time Between Failures), sigue una distribución exponencial con una media de 10 horas,
mientras que el tiempo medio de reparación, MTTR (Mean Time To Repair), se modeliza con una
distribución Triangular (0.5, 1, 2), en horas.
Paso 1: En la sección “Reliability Logic” de la Operación C, especifique que el tipo de fallo, Failure Type, se
base en el tiempo, “Calendar Time Based”, que el tiempo entre fallos, Uptime Behavior, sea
Random.Exponential(10), con Units en horas, y que el tiempo de reparación, Time To Repair, sea
Random.Triangular(0.5,1,2), con unidades en horas (Figura 7.11).
El coste tremendo de parada debido a que se paraliza el carril entero es la razón fundamental de por qué cada vez es más difí cil
encontrar carriles y otros sistemas totalmente automatizados.
56 Modelización y Simulación: Libro de Prácticas con SIMIO
cintas si no hay nodos realizando operaciones de carga/descarga (asignando DesiredSpeed = 0.5
para todas las cintas) como se aprecia en la Figura 7.12.31
Paso 4: Finalmente, cambie la animación de StationC de forma que tome el color rojo cuando ha fallado.
Seleccione StationC y haga clic en el botón “Add Additional Symbol”. Cambie el color del segundo
símbolo a rojo utilizando la sección Decoration. Después de seleccionar la estación StationC, asigne la
propiedad Current Symbol Index de StationC a Math.if(StationC.Failure.Active ==
1,1,0), lo que hará que el símbolo tome el valor 0 o 1 (acuérdese de que el indicador de símbolo
empieza en 0).33
Paso 5: Ejecute el modelo y asegúrese de que el carril se detiene cuando la estación está siendo reparada.
Tiempos de Proceso Específicos por Pieza y Fuentes Únicas: Célula de Fabricación bis 57
58 Modelización y Simulación: Libro de Prácticas con SIMIO
Capítulo 8
“Material Consumido”, Cambios, Propiedades: Un
Ensamblaje
El objeto Estación de Trabajo, Workstation
Tiempos de preparación dependientes de la secuencia
Material consumido
Propiedades
Un proceso de ensamblaje de una maqueta es un proceso en el que se construye una maqueta a partir de los
componentes disponibles. Las peticiones de ensamblaje llegan a una estación de trabajo siguiendo una
distribución Poisson con un tiempo entre llegadas de 3 minutos. La orden se realiza por una cantidad de
unidades iguales. Las maquetas se ensamblan a partir de 3 componentes; un subcomponente SubA, un
subcomponente B, y dos conectores – este estructura de producto se denomina también lista de materiales o
Bill of Materials (BOM). Cada maqueta se procesa en un tiempo que se asemeja a una distribución triangular
de parámetros (0.1, 0.2, 0.3) minutos. Sólo se puede ensamblar una unidad a la vez en la estación. Se desea
obtener para el análisis de la estación el número de unidades producidas así como de componentes utilizados,
así como información sobre el cumplimiento de los pedidos.
Existen cuatro tipos de maquetas producidas a partir del mismo BOM, según el color: 15% amarillas, 20%
rojas, 35% azules, y 10% verdes. Después de completar un pedido, se necesita 1 minuto para limpiar la
estación, así como 2 minutos para prepararse para el siguiente pedido. Esta restricción sufrirá modificaciones
más adelante. Finalmente, los pedidos tardan en llegar a la estación entre 1 y 2 minutos, lo mismo que tardan
para llegar a la salida desde la estación.
Paso 1: Cree un nuevo modelo que tenga una fuente, SOURCE (OrdersArrive), un sumidero, SINK
(OrdersLeave), y una estación de trabajo, WORKSTATION (KitOperation) .
El tiempo requerido para cada maqueta se modeliza como Triangular(0.1, 0.2, 0.3)
minutos.
La limpieza es de 1 minuto.
Paso 3: Añada 3 símbolos adicionales para la entidad Orders. Seleccione Order y haga clic en el botón Add
Additional Symbol. Asigne color a los símbolos adicionales: “Amarillo”, “Rojo”, y “Azul”. Los símbolos
se enumeran empezando en 0.
Las propiedades, Properties, y los estados, States, se añaden utilizando la pestaña “Definitions”.
Seleccione MODELENTITY en el panel [Navigation] y seleccione la sección Definitions→States. Cada
pedido ha de tener una cantidad diferente y se necesita una variable de estado para almacenar esa
información.
Debe usar la variable de estado discreta, “Discrete State Variable”, de nombre Picture, para
representar la imagen que va a representar a la entidad. Esa variable la proporciona SIMIO.
Debe añadir, en cambio, otra variable de estado discreta, “Discrete State Variable”, de nombre
OrderQuantity, que representará la cantidad de maquetas en el pedido.
Paso 5: Se necesita una tabla para determinar el porcentaje de veces de cada tipo de pedido y el número
correspondiente al dibujo del símbolo. Seleccione MODEL en el panel [Navigation]. Cree una
TableSymbol para los dibujos de las entidades (Tabla 8.1) a través de la pestaña “Data”.
Paso 6: Hay que determinar el tipo de pedido (Verde, Amarillo, etc.), la cantidad que lleva el pedido, o
tamaño del pedido, y el dibujo correcto. Las asignaciones de valores a las variables de estado para las
entidades entrantes a través de la fuente serán realizadas por el disparador de procesos denominado
“procesado”, “Processed” y cuyo nombre será OrdersArrive_CreatedEntity. Es este proceso, podemos
realizar las asignaciones de los valores de las variables de estado para las piezas entrantes, como se
muestra en la Figura 8.1.34
Pregunta 1: ¿Por qué se decidió utilizar la tabla en el disparador “Created” en vez de en el disparador
“Creating” como se hizo en la Figura 7.5?
34
En lugar de utilizar un disparador de procesos, se podía haber utilizado la asignación On Created Entity Table Reference
Assignment para conseguir el mismo objetivo.
60 Modelización y Simulación: Libro de Prácticas con SIMIO
Paso 8: Asigne el dibujo correcto así como el tamaño del pedido. Puede hacer esto en dos etapas diferentes o
en una misma etapa con múltiples filas, si hace clic en el botón “0 Rows”. Tiene que añadir cada
asignación como se muestra desde la Figura 8.2 hasta la Figura 8.4.
Use el editor “Repeating Property Editor” para hacer asignaciones múltiples (Figura 8.2).
Cuando la estación de procesado de las maquetas cambia de un color a otro, se incurre en un tiempo de
cambio o preparación de máquina que depende del color que precedió al pedido actual. El tiempo de cambio,
en minutos, se muestra en la Tabla 8.2.
Añadamos los tiempos de cambio, dependientes de la secuencia, en nuestro modelo. En las propiedades de la
estación, WORKSTATION, se puede especificar los tiempos de cambio como si fueran constantes (Specific) (dos
minutos para cada operación). Pero antes de utilizar tiempos que dependan de la secuencia, debemos ver
cómo se incorporan los tiempos de cambio en un modelo de SIMIO.
Paso 1: Primero, se necesita una lista, LIST, de identificadores que se puedan utilizar en una tabla de
cambios, en la que, en este caso, se escriba como una lista de caracteres, Strings. Utilizando la pestaña
“Definitions”, genere una lista, LIST, de caracteres, de nombre Colors. Los contenidos de la lista Colors
corresponderán con los nombres de los colores asignados: “Green”, “Yellow”, “Red”, y “Blue” como se
muestra en la siguiente Figura. Es importante que se incluyan en el orden correspondiente a los símbolos
(0, 1, 2, y 3).
Paso 3: Especifique la lógica de los tiempos de cambio en la estación KitOperation (Figura 8.6).
Paso 5: La estación puede estar en estados distintos: esperando piezas, starved, procesándolas, processing,
preparándose, setup, y limpiando, teardown. Para ver cómo varían los porcentajes a lo largo del tiempo,
añada un gráfico de tarta, “Status Pie” a partir de la pestaña “Animation”. Especifique la propiedad Data
Type, como una lista de estados, ListState, que debe relacionarse con
KitOpereaton.ResourceState.
Paso 6: Guarde el modelo y ejecute la simulación para un período de 1 hora. Luego, ejecútelo en modo
rápido, fast-forward, para un período de 2, 4, y 8 horas. Después de 8 horas, conteste a lo siguiente.
El objeto “estación de trabajo” tiene más posibilidades que un objeto “server”. Por ejemplo, puede utilizarse
para controlar las materias primas que tiene que consumirse, según lo especificado en el “bill of materials” de
la pieza que se está procesando. Si las materias primas no están disponibles, las piezas no pueden ser
procesadas.
Paso 2: Tenemos que declarar la existencia de las materias primas que lleva una maqueta así como la lista de
materiales que especifica la cantidad de cada tipo de materia prima que se necesita para fabricar una
maqueta. Se necesita definir cuatro nuevos “Elements”, del tipo MATERIAL, a partir de la sección
Definitions→Elements.
Cree SubA, SubB, y Connectors como tipos de material, todos con una cantidad inicial, Initial
Quantities, de “0” unidades, lo que será cambiado en breve.
Cree KitsBOM como un elemento tipo MATERIAL, pero utilizando el editor de propiedades
BillofMaterial, como muestra la Figura 8.7, en la que se define qué materiales componen el producto
final (1 SubA y 1 SubB y 2 Connectors).
Paso 3: Como el nivel de inventario es una característica física de nuestro modelo y sólo necesita ser
inicializado al comenzar la simulación, es el momento ideal de utilizar una propiedad de SIMIO.
Utilizando la pestaña “Definitions”, haga clic en “Properties” para añadir nuevas propiedades a los
objetos. Cree tres nueva propiedades “Standard Real Properties”, InitInvA, InitInvB, e InitInvC.
Coloque estas propiedades en la nueva categoría InvModel. La primera vez, hay que teclear el nombre
de la nueva categoría (InvModel) en la ventana correspondiente. Para las dos nuevas propiedades puede
seleccionar la categoría del desplegable.
Paso 4: Vuelva a “Elements” e indique Initial Quantity, de cada uno de los tres materiales como una
propiedad de referencia hacia las nuevas propiedades definidas. Recuerde que esta operación se realiza
haciendo clic con el botón derecho en el desplegable y seleccionando la propiedad de referencia.
Paso 5: Como parte del análisis, cree algunas estadísticas para estudiar los materiales que se han consumido
así como sobre el producto final. Existen tres tipos de estadísticas que se pueden definir. Recuerde que
una estadística “Tally” es una estadística basada en observaciones (por ejemplo, tiempo de espera en una
fila). Una estadística de estado, “State statistic”, es en cambio una estadística basada en el tiempo que
monitoriza una variable de estado (número en una fila). Una estadística de final de simulación, “Output
Statistic” puede utilizarse para mostrar el valor de una expresión, una vez al final de cada repetición.
Añada 4 estadísticas finales, OUTPUT STATISTICS, con los siguientes nombres y expresiones.
Paso 6: Vuelva a KitOperation y rellene las propiedades Other Requirements (por ejemplo, Material
Consumido, Material Consumption, Nombre del Material Consumido, Consumed Material Name,
Cantidad Consumida, Consumed Quantity, Producción de Materiales, Material Production, Nombre del
Material Producido, Produced Material Name, y Cantidad Producida, Produced Quantity) como se
muestra en la Figura 8.8. Estas propiedades harán que la estación consuma materiales según lo indicado
en el BOM cuando se procesan las maquetas.
Paso 8: Guarde el modelo y ejecútelo por un período de 8 horas y observe las estadísticas. Aunque desee ver
la animación durante un rato, necesitará ejecutarlo en modo rápido hasta el final para obtener los
resultados.
Pregunta 9: Después de analizar el número de maquetas producidas, ¿tiene alguna duda sobre las
especificaciones del modelo?
Paso 9: Cambie el valor del inventario inicial para permitir que se produzcan maquetas durante las 8 horas.
En lugar de que las materias primas estén disponibles para todo el período de 8 horas al principio de la
simulación, las materias primas han de llegar cada dos horas, empezando en 0. ¿Cómo se modeliza esta
nueva situación en SIMIO?
Paso 1: Tome algunas estadísticas sobre los niveles de inventario para las tres materias primas a lo largo de
un día: SubA, SubB, y Connectors. Dado que el inventario es una estadística basada en el tiempo, hay
Paso 3: Implementemos ahora un sistema de reposición en el que un operario aparece por la estación de
maquetas cada dos horas, empezando en 0, y rellena stock de SubA, SubB, y Connectors hasta un nivel
prefijado.
Paso 5: Utilizando la sección Definitions→Elements, añada un temporizador, TIMER, que lanzará un evento
basado en un intervalo de tiempo (un “timer event” es una interrupción en la simulación que permitirá
que un proceso se ejecute).
Ejecute el temporizador en 0.0 (la propiedad Time Offset debe ser 0) y debe activar un proceso cada
2 horas (Time Interval debe ser 2).
Llame StockerArrives al temporizador.
SubA.QuantityAvailable = SubAOrderQty
SubB.QuantityAvailable = SubBOrderQty
Connectors.QuantityAvailable = ConnOrderQty
El ejemplo anterior asume que el reponedor llegará exactamente cada dos horas y subirá el nivel de stock
hasta el límite establecido. Sin embargo, la compañía desea implantar una filosofía de producción similar al
Just-In-Time (JIT). Tienen un proveedor que tiene un almacén situado muy cerca de la planta y que
responderá a los pedidos rápidamente. La compañía ha implantado un sistema de monitorización tal que
cuando un pedido hace que el inventario baje por debajo de un límite, se lanza un pedido al proveedor que lo
ha de atender en 1 hora.
Paso 1: Guarde el modelo con su propio nombre. Tiene que borrar ahora el temporizador StockerArrives y
el proceso RespondToTimerEvent o deshabilítelo cambiando el valor de la propiedad Initially Enabled
a False, utilizando la propiedad “General” del temporizador, TIMER.
Paso 2: Añada un nuevo sumidero, SINK, InventoryLevel. Posiciónelo debajo de la estación que fabrica la
maqueta.
Paso 3: Vaya a la pestaña “Definitions” y añada tres elementos controladores, MONITOR, MonitorA,
MonitorB, y MonitorC, utilizando la sección “Element”. Un elemento controlador puede ser utilizado
para monitorizar el valor de una variable de estado cuando ésta cambia su valor o cuando el valor cruza
un límite. Las propiedades de MonitorA se pueden ver en la Figura 8.10.
Paso 5: Añada tres Fuentes, SOURCES (suppliers), SupplierA, SupplierB, y SupplierC, que enviarán las
materias primas a la estación, como se muestra en la Figura 8.11.
SIMIO proporciona una etapa producir, Produce, que hace esencialmente lo mismo y otra consumir, Consume, con la que se
realiza una resta, pero la lógica utilizando una etapa Assign parece directa.
68 Modelización y Simulación: Libro de Prácticas con SIMIO
Figura 8.12: Incrementando la Cantidad Disponible
Paso 7: Repita el proceso para las otras dos materias primas al final de sus respectivos caminos.
Paso 8: En las propiedades del modelo, fije los valores iniciales de las materias principales SubA, SubB, y
Connectors otra vez en 250, 250, y 500, dado que la acción de reposición se activa convenientemente.
Fije los puntos de pedido y los tamaños de pedido en los valores incluidos en la Tabla 8.3.
Tabla 8.3: Punto de Pedido (Reorder Point) y Tamaño de Pedido (Order Quantity)
Materia Punto de Tamaño de
Prima Pedido Pedido
SubA 125 200
SubB 125 200
Connector 250 400
Paso 9: Añada seis etiquetas de estado, “Status Labels” utilizando la pestaña “Animation”, para que se
muestren las cantidades disponibles de cada uno de los tres niveles de materias primas disponibles:
SubA, SubB, y Connectors (Figura 8.13). Estas primeras tres etiquetas son simplemente texto, mientras
que las otras tres tendrán una expresión (Figura 8.14) para mostrar la cantidad disponible
QuantityAvailable.
Este es uno de los capítulos más interesantes en cuanto que ilustra cómo modelizar lo que se
considera un operación compleja compuesta no sólo por temas de inventarios, sino también por
conceptos relacionados con la cadena de suministros, que serán nuevamente explorados en el
Capítulo 12, Capítulo 22 y Capítulo 25.
Se han introducido otras capacidades muy valiosas en este capítulo que deberían ser ampliadas,
lo que haremos en capítulos futuros.
Como si fuera un ejercicio de modelización, ¿cómo construiría un modelo equivalente en otro
lenguaje de simulación?
Índice 71
M Bidirectional, 32
Selection Weight Property, 19
Material (Material), 66 Travel Time, 38
Math (Matemática), 91 Pivot Grid, 15, 221
Epsilon, 140 Priority
If, 91 InitialPriority Property, 22
Is, 147 Priority State Variable, 22
Max, 105 Process
Min, 105 Model Create Process, 46
(Modelo), 2 OnInitialized, 77
ModelEntity Override (Desactivar), 162
Initial Desired Speed, 27 Processed, 63
Initial Sequence, 31 Processing, 49
ModelEntity (Entidad), Restore (Restablecer), 162
2 Modelo Process Steps (Etapas de Proceso)
Model Properties, Assign (Asignar), 45
2 Modelos Create (Crear), 107
Aeropuerto, 12 Decide (Decidir), 47
Aeropuerto Bis, 18 Delay (Retrasar), 49
Almacén, 152 Destroy (Destruir), 205
Cadena de Suministro con Múltiples Productos, 246 EndTransfer (Acabar Transferencia), 172
Cadena de Suministros Simple, 102 Execute (Ejecutar), 155
Cadenas de Suministros Avanzada, 194 Fire (Disparar), 82
Carril de Transferencia, 56 Insert (Insertar), 182
Célula de Fabricación, 27 Interrupt (Interrumpir), 84
Célula de Fabricación bis, 51 Release (Liberar, Soltar),
Clínica de Cuidados Intensivos, 88 50 Remove (Retirar), 84
Clínica de Cuidados Intensivos bis, 94 Remove (Sacar), 182
Clínica Veterinaria, 117 Ride (Transportar), 148
Clínica Veterinaria bis, 126 Route (Dirigir, Enviar), 161
Clínica Veterinaria Tres, 131 Search (Buscar), 83, 146
Ensamblaje de Tarjetas de Memoria, 35 Seize (Apresar, Agarrar), 49
Ensamblaje de Tarjetas de Memoria bis, 44 Set Node (Fijar Nodo), 84
Ensamblaje de una Maqueta, 62 Set Table (Fijar Tabla), 55
Gasolinera, 78 Tally (Contar), 46
La Tienda de Helado, 3 Transfer (Transferir), 84
Línea de Camisas, 185 UnBatch (Desagrupar), 48
Objeto Delay (Retardo), 159 Wait (Esperar), 81
Objeto Delay bis, 168 Project Management (Gestión de Proyectos)
Planificación de Procesos/Gestión de Proyectos, 211 Critical Path (Camino Crítico), 211
Sistemas Kanban con Operarios Multidisciplinares, Earliest Finish (Finalización Más Temprana), 212
230 Latest Finish (Finalización Más Tardía), 212
Sucursal de un Banco, 141 Percent CP(Critical Path) (Criticidad), 212
Tanque Simple, 74 Slack (Holgura), 212
Una Célula de Fabricación, 178 Properties (Propiedades)
Monitor (Controlador, Monitorizador), Element Reference, 173
70 Multiple SKUs, 246 Object Reference, 126
Repeat Group, 176
O Standard Property,
22 Property, 23
OptQuest, 112
Constraints, 114
R
P Ranking y selección, 111
Rate Table, 20
Paneles Reference Property, 38
[Project Library], 7 Referenced Property, 127
[Standard Library], 3 Reneging (Abandonar una Fila), 83
Navigation Panel, 2 Repeating Property Editor, 36
Paths (Caminos), 19 Bill of Materials, 66
Índice 73