Simulación de líneas de producción y servicios mediante el uso de Python-Simpy

132 

Loading....

Loading....

Loading....

Loading....

Loading....

Texto completo

(1)PROYECTO DE GRADO Presentado ante la ilustre UNIVERSIDAD DE LOS ANDES como requisito parcial para obtener el Título de INGENIERO DE SISTEMAS. SIMULACIÓN DE LINEAS DE PRODUCCIÓN Y SERVICIOS MEDIANTE EL USO DE PYTHON-SIMPY. Por Br. Pedro Rafael Bohórquez Mejías Tutor: Prof. Sebastián Medina. Mayo de 2009. ©2009 Universidad de Los Andes Mérida, Venezuela.

(2) SIMULACIÓN DE LINEAS DE PRODUCCIÓN Y SERVICIOS MEDIANTE EL USO DE PYTHON-SIMPY.. Resumen. El presente proyecto consiste en realizar una librería de simulación que será utilizada en el desarrollo de modelos de simulación de procesos productivos y de prestación de servicios. Dicha librería esta conformada por varios módulos, los cuales representen las características que son comunes a los procesos de producción y servicios en general, como por ejemplo llegadas de órdenes y procesamiento de una pieza ó de una solicitud de servicio. Cualquier modelo de simulación de procesos de producción y servicios, puede hacer uso de uno o varios módulos de la librería, esto dependiendo de la configuración del modelo de simulación de cada proceso. Para el desarrollo de esta librería se utilizó el paquete de simulación SimPy, el cual fue desarrollado bajo el lenguaje de programación de alto nivel Python. Los módulos que representan las características de los procesos de producción y servicios presentes en la librería son: máquina, transporte, generadores de números aleatorios para los tiempos de proceso (uniformes y exponenciales), servicio, generaciones de llegadas, depósitos. También se incluyen objetos propios del lenguaje SimPy utiles para simular procesos de producción. Los diferentes módulos de la librería requieren como entrada los parámetros o atributos correspondientes al sistema en particular a simular y la librería devuelve la declaración de variables que son necesarias en la construcción del modelo de simulación. Durante la construcción de cada módulo de la librería, se realizaron pruebas mediante ejemplos sencillos de procesos de producción y servicios para evaluar el funcionamiento de dicho módulo. Una vez terminados y probados todos los módulos de la librería se utilizaron para desarrollar la simulación de un proceso de producción, se tomo el caso de la Planta Productora de Alimentos Lactos Santa Rósa.. ii.

(3) Palabras Claves.  Procesos  Simulación  Programación  Simulación de procesos productivos  Simulación por eventos discretos  SimPy. iii.

(4) Indice General. Capítulo 1 1. Introducción ………………………………………………………….. 1 1.1. Antecedentes ……………………………………………………. 2 1.2. Planteamiento del Problema ……………………………………. 3 1.3. Justificación …………………………………………………….. 4 1.4. Objetivos ………………………………………………………... 4 1.4.1. Objetivo General ……...…………………………………... 4 1.4.2. Objetivos Especificos …………………………..…………. 4 1.5. Metodología …………………………………………………….. 5 1.6. Alcance del Proyecto…………………………………………… 6 1.7. Estructura del proyecto ….…………………….……………….. 6. Capítulo 2 2. Marco Teórico……………………………..………………………….. 8 2.1. Conceptos Básicos ……………………..……………………….. 8 2.1.1. Sistema ……………………………..…………………….... 8 2.1.2. Modelos ……………………………..…………………….. 11 iv.

(5) 2.1.3. Simulación …………………………..……………………. 14 2.1.3.1. Campos y áreas de aplicación de la simulación …..... 17 2.1.3.2. Metodología de un estudio de Simulación ………..... 18 2.2. Simulación de Sistemas Orientados a Eventos Discretos ……... 20 2.3. Estrategias de Simulación de Sistemas Orientados a Eventos Discretos…………………………………………………….…... 21 2.3.1. Programación de eventos ……………………………....… 21 2.3.2. Exploración de Actividades …………………………….... 24 2.3.3. Interacción de Procesos ………………………………….. 25 2.4. Simulación Orientada a Objetos ………………...….….….…... 26 2.5. Software de Simulación ………………………………..…...… 26 2.6. Python ………………………………………………………… 28 2.7. SimPy (Simulador en Python) ……………………...………… 28 2.7.1. Concepto …………….…………………………………... 29 2.7.2. Características Generales ………………………………... 29 2.7.3. Enfoque para la implantación de un Modelo en SimPy …. 30 2.8. Procesos Productivos …………………………………………. 31 2.8.1. El proceso ………………………………………………... 32 2.8.2. Clasificación de los Procesos y Características ………….. 34 2.8.2.1. Proceso Lineal o por Producto …………………….. 34 2.8.2.2. Proceso Intermitente (Talleres de Trabajo) ………... 35 2.8.3. Medidas de comportamiento en Procesos Productivos .…. 35 2.8.4. Cómo se organiza un sistema Productivo ……………….. 36 2.8.5. Componentes de un Proceso Productivo ………………… 37 2.8.6. Actividad Productiva …………………………………….. 38 2.8.7. Función de producción …………………………………... 38 2.8.8. Sistemas de manipulación de materiales ………………… 39 v.

(6) 2.8.9. Transporte ………………………………………………... 40 2.8.10. Ejemplo simple de un proceso productivo ……………… 41 2.9. Librería de Programación ……………………………………... 42. Capítulo 3 3. Desarrollo de la Librería de Simulación ………………………….… 44 3.1. Módulo Máquina ……………………………………………… 45 3.2. Módulo Transporte ……………………………………………. 47 3.3. Simulación de una Línea de Producción ……………………… 48 3.4. Módulo Tiempo Uniforme ……………………………………. 54 3.5. Módulo Tiempo Exponencial ………………………………… 55 3.6. Módulo de Servicio …………………………………………... 56 3.7. Simulación de un sistema de Servicio ………………………... 57 3.8. Módulo de Generación de Llegadas ………………………….. 62 3.9. Simulación de un sistema de Servicio ………………………... 63 3.10. Módulo de Depósito ……………………………...…………... 68 3.11. Módulo de Tally ……………………………….…………….. 70 3.12. Módulo de Monitor ………………………….………………. 70 3.13. Módulo de almacenes (Store) ……………….………………. 71 3.14. Simulación de una Línea de Producción ……….…………… 73 3.15. Contenido completo de la Librería de Simulación …….……. 77. vi.

(7) Capítulo 4 4.. Simulación de Procesos de Producción de Lácteos Santa Rosa …. 81 4.1.. Simulación del Proceso de Producción de Queso Semiduro .. 82. 4.2.. Simulación del Proceso de Producción de Mantequilla …..... 87. 4.3.. Simulación del Proceso de Producción de Yogurt ………….. 92. 4.4.. Simulación de los 3 Procesos Simultáneamente ………….. . 95. 4.5.. Módulo Menú ……………………………………………… 98. Capítulo 5 5.. Conclusiones y Recomendaciones ……………………..……...... 101 5.1.. Conclusiones ………………………………………..……... 101. 5.2.. Recomendaciones …………………………………..……... 102. Apendice A A.1 Proceso de Producción de Queso Semiduro ………………........ 104 A.2 Proceso de Producción de Mantequilla …..………………........ 108 A.3 Proceso de Producción de Yogurt ….……………….................. 111 A.4 Simulación de los 3 Procesos Simultáneamente ………………. 115. Bibliografia ………………………………………………………… 124. vii.

(8) Indice de Figuras Figura 2.1: Proceso de manufactura como sistema …………………….. 9 Figura 2.2: Correspondencia entre un sistema y un modelo …...……… 12 Figura 2.3: Formas de estudiar un sistema ……………………………. 16 Figura 2.4: Etapas en un estudio de Simulación ………………………. 20 Figura 2.5: Línea flexible de fabricación ……………………………… 42. Figura 4.1: Salida de la corrida de menu.py …………………………. 99 Figura 4.2: Salida de la corrida de menu.py …………………………. 99. Indice de Tablas Tabla 2.1: Aplicaciones de la Simulación ……………………………. 17 Tabla 2.2: Código ejecutivo de la programación de eventos ……….... 23 Tabla 2.3: Código de evento de la programación de eventos ………... 24. viii.

(9) CAPITULO 1. Capítulo 1. Introducción. En el campo de la industria de la Producción y la Prestación de Servicios ha surgido la necesidad de tener ventajas competitivas, además de enfrentar cambios tanto en los Sistemas de Producción como en la Prestación de Servicios y también la necesidad de prepararse ante posibles eventualidades que puedan ocurrir en las empresas. Todo esto, complementado con la creciente capacidad en las computadoras y la creciente investigación en el campo de la Ciencia de la Computación, ha llevado a diseñar herramientas que puedan apoyar el proceso de toma de decisiones en distintas disciplinas, áreas de diseño y manejo de la industria, siendo una de estas herramientas la Simulación. La simulación es una metodologia muy importante en el mundo de la computación, actualmente se simulan los comportamientos de hasta las partes más pequeñas de un mecanismo, las plantas productivas, sucursales bancarias, crecimiento de poblaciones de especies de animales y procesos productivos, para mencionar unos pocos ejemplos de las aplicaciones de esta poderosa herramienta. La simulación es de gran utilidad en la Investigación de operaciones y en sus aplicaciones industriales, ya que mediante su uso no es necesario experimentar con el sistema real, y permite imitar y descubrir comportamientos de sistemas que ya están implantados para así mejorarlos o que se desean implantar para predecir su comportamiento futuro. Un caso particular de simulación es la Simulación por Eventos Discretos, en este caso se realiza la simulación de sistemas en los cuales las propiedades de interés de dicho sistema cambian únicamente en cierto instante de tiempo o secuencias de instantes de tiempo y estos cambios llevan a un cambio en estado del sistema. 1.

(10) CAPITULO 1 Los Sistemas de Producción y de Prestación de Servicios tienen un comportamiento que puede ser simulado por eventos discretos, ya que estos son secuencias de actividades en la que se producen cambios en instates de tiempos puntuales. La simulación de procesos productivos y de servicios permite mejorar la competitividad detectando ineficiencias motivadas por la descoordinación entre secciones de una misma planta, puede anticipar lo que pasaría en producción si se cambian variables importantes del proceso. En los procesos productivos y de servicios ocurren eventos que pueden ser simulados como eventos discretos mediante la utilización de herramientas de simulación implementadas bajo la filosofía de software libre, ya que existen herramientas de este tipo, como Python-SimPy, que es una herramienta muy versátil en cuanto a la Simulación por Eventos Discretos, y debido a que es un lenguaje de simulación orientado por objetos permite la creación de librerías particulares para simulaciones especificas. Por tal motivo, es posible la realización de librerías de simulación específicamente para simular procesos productivos y de servicios. Otro beneficio que tiene la herramienta Python-SimPy esta implementado en software libre, y por lo tanto trae consigo diversos beneficios como por ejemplo que ayuda a reducir los gastos en el desarrollo de programas, y brinda la libertad de poder modificar las aplicaciones de acuerdo a la necesidad que tenga algún usuario.. 1.1 Antecedentes. Para la simulación de sistemas productivos se han diseñado algunas herramientas o paquetes de simulación, entre ellos podemos citar el Software de Simulación Arena de Rockwell Software Inc, la cual es una herramienta de tipo general, es decir, que puede ser usada para realizar cualquier modelo de simulación de cualquier tipo. Este tipo de software es de gran utilidad para visualizar y estudiar de qué modo se están llevando a cabo los diferentes procesos; pero es importante resaltar las privaciones que trae consigo, como por ejemplo que es un software de uso propietario que solo puede ser usado pero no puede ser modificado por los usuarios y también que es altamente costoso, lo que impide a la mayoría de los usuarios la utilización del mismo. SimPy es una herramienta computacional que ha permitido simular sistemas complejos del mundo real. Según Muller (2003) [12] fue desarrollado originalmente por Muller y Vignaux en el año 2002, es un. 2.

(11) CAPITULO 1 paquete de simulación de código abierto (software libre) y es uno de los pocos paquetes para simulación de eventos discretos existentes de código abierto. En la escuela de Ingeniería de Sistemas de la universidad de Los andes se han realizado diversas investigaciones utilizando la herramienta de simulación SimPy, podemos citar el trabajo especial de grado de Briceño (2007) [22], quien realizó un Estudio Comparativo del Paquete de Simulación Orientado a Eventos Discretos SimPy, comparando distintos modelos en SimPy con modelos desarrollados con GLIDER y ARENA, y desarrolló un Manual de Usuario con Ejemplos Resueltos, el cual es una buena fuente de información en relación del uso de la herramienta de simulación SimPy. También podemos citar el trabajo de Santiago (2008) [23], en la cual se utilizó SimPy para hacer la Simulación de la línea de producción de los Pasaportes Electrónicos del Servicio Autónomo de Identificación, Migración y Extranjería (SAIME). También se puede citar el trabajo Perdomo (2009) [24] donde se utilizó SimPy para el Modelado y Simulación por Eventos Discretos mediante Redes de Petri. Rivas (2008) [25] usó Simpy para realizar su proyecto de grado en el cual se desarrolló un Modelo de Simulación para el Sistema Automatizado de Identificación Dactilar (AFIS) del Servicio Autónomo de Identificación, Migración y Extranjería (SAIME). Podemos citar también el trabajo de Pacheco (2008) [26] quien trabajó con Optimización de Modelos de Simulación en SimPy utilizando la Metaheurística de Recocido Simulado, y Avendaño (2007) [27] trabajó con Optimización de Modelos de Simulación en SimPy realizando modelos donde se usa la Aplicación de la Metodología de Superficie de Respuesta.. 1.2 Planteamiento del Problema. SimPy es una herramienta muy útil para la simulación por eventos discretos, y cada día está siendo utilizada por más desarrolladores a nivel mundial. Sin embargo esta herramienta no cuenta con librerías de simulación con clases y funciones que puedan ser reutilizadas al momento de hacer la simulación de procesos de producción y sistemas de servicios. Por tal motivo los usuarios de SimPy tienen que reescribir fragmentos de código cada vez que desarrollan una aplicación de simulación de este tipo, lo que hace un poco extensa y repetitiva la programación de los modelos de simulación.. 3.

(12) CAPITULO 1. 1.3 Justificación. Cada día se observa una incrementada migración hacia los paquetes de software que están orientados al software libre, y esto es debido a que estos poseen las características de ser gratuitos, de fuente abierta, potentes y que brindan ciertas libertades que no se encuentran en paquetes de software de tipo propietario o privativo, es por esta razón que es muy importante el desarrollo de aplicaciones de simulación bajo el enfoque de software libre. En este sentido el desarrollo de este proyecto permitirá contar con un software de simulación de procesos de producción y de servicios bajo el enfoque de simulación de eventos discretos con todos los beneficios que brinda el software libre, ya que el lenguaje de Simulación SimPy no cuenta con librerías especificas utiles para realizar simulación de procesos de producción y servicios.. 1.4 Objetivos. 1.4.1 Objetivo General. Desarrollar una librería para la simulación de líneas de producción en sistemas de fabricación y de prestación de servicios, mediante el uso del paquete de simulación Python-SimPy.. 1.4.2 Objetivos específicos. •. Revisar los conceptos de Sistemas de Producción y Servicios.. •. Revisar los conceptos de Líneas de Producción.. •. Revisar los conceptos de Simulación por Eventos Discretos.. 4.

(13) CAPITULO 1 •. Creación de módulos de SimPy que permitan modelar los componentes de sistemas de producción y servicios.. •. Desarrollar clases de SimPy para cada uno de los diferentes aspectos presentes en sistemas producción y servicios.. •. Probar las clases desarrolladas mediante la simulación de sistemas de producción y servicios sencillos.. •. Utilizar la librería de código Python para el modelado y la simulación de un sistema productivo real y complejo.. 1.5 Metodología. Antes de comenzar con el desarrollo de la librería de simulación de sistemas de producción y servicios fue necesario realizar algunas actividades previas al inicio del desarrollo de esta, ya que son de gran importancia y aportan el conocimiento necesario para realizar la programación de un modelo de simulación, y específicamente de una librería de código reutilizable. En primer lugar se realizo la revisión bibliográfica y búsqueda en internet sobre temas relacionados con simulación, procesos de producción en general y procesos de prestación de servicios, y también simulación por eventos discretos debido a que según lo observado acerca de procesos de producción y servicios, estos procesos tienen un comportamiento que se corresponde con eventos discretos. También fue necesario realizar un estudio sobre el lenguaje de programación Python y el lenguaje de simulación SimPy, con la finalidad de comprender como pueden utilizarse dichos lenguajes para el desarrollo de modelos de simulación de procesos de producción y servicios y para el desarrollo de la librería de código reutilizable que permita simplificar el desarrollo de dichos modelos de simulación. Además de la revisión de distintos contenidos sobre procesos de producción y servicios, fueron de gran importancia las observaciones realizadas en visita técnica a algunas empresas de producción y de servicios, en las cuales se recibió la explicación del funcionamiento, la organización y como están constituidos los sistemas de producción y de servicios, y así comprender cuales son las características de estos procesos y saber cuáles variables se van a utilizar para la construcción de los distintos módulos 5.

(14) CAPITULO 1 que conformaran la librería simulación y de los distintos modelos de sistemas de producción y prestación de servicios. Luego de estudiar múltiples sistemas de producción y servicios se extrajeron las características comunes a estos procesos, las cuales estarán representadas en los distintos módulos que conformaran la librería de simulación como son: máquinas, transporte, depósitos, generación de llegadas, generación de números aleatorios y servicio y cada módulo de la librería se utilizara para realizar las prueba mediante ejemplos sencillos de procesos de producción y servicios... 1.6 Alcance del Proyecto. La librería de simulación implementada en Simpy esta conformada por diversos módulos que modelan los elementos o características comunes a todos los sistemas de producción o servicio. Por tal motivo es posible utilizar la librería para simular cualquier tipo de proceso de producción o de servicio en general que incluya elementos presentes en la misma. Desde procesos sencillos como la elaboración de un pieza por una máquina, hasta procesos más complejos en los cuales estén presentes muchas máquinas, muchos sistemas de transporte, almacenes, depósitos temporales y muchos recursos y entidades en el sistema. Con la librería desarrolla se puede simular procesos de servicio y de producción tanto de elementos indiduales como de procesos en simultaneo en los que se elaboran o se atienden varios tipos de elementos al mismo tiempo.. 1.7 Estructura del Proyecto. El presente trabajo está constituido por cinco (5) capítulos y un anexo, los cuales se describen a continuación:. Capítulo 1. En este capítulo se expone una breve introducción, además de los antecedentes del proyecto desarrollado, el planteamiento del problema, la justificación del problema, el alcance del proyecto, el objetivo general y los objetivos específicos y la metodología utilizada para el desarrollo del proyecto. 6.

(15) CAPITULO 1. Capítulo 2. En este capítulo se desarrollan los elementos teóricos que son utilizados para la elaboración del proyecto, conceptos básicos de sistemas, modelos, simulación, así como la simulación de eventos discretos y la definición de procesos productivos y sistemas de servicio. También se da una breve explicación de los lenguajes utilizados para el desarrollo de las librerías.. Capítulo 3. En este capítulo se desarrolla la librería de simulación de procesos de producción y prestación de servicios utilizando para ello algunos ejemplos de este tipo de procesos.. Capítulo 4. En este capítulo se muestran las aplicaciones desarrolladas de simulación de procesos de producción estudiados durante la visita a lácteos Santa Rosa, en los cuales se utiliza la librería de simulación de procesos de producción y servicios. Se muestran los modelos de simulación desarrollados y los resultados de la simulación de estos procesos.. Capítulo 5. En este capítulo se muestran las conclusiones obtenidas del proyecto y las recomendaciones planteadas para futuros estudios de esta investigación.. Apendice A. En esta parte se muestran los códigos completos de los modelos desarrollados en SimPy.. 7.

(16) CAPITULO 2. Capítulo 2. Marco Teórico. Este capítulo tiene por finalidad presentar los fundamentos teóricos necesarios para el desarrollo del presente proyecto y el alcance de los objetivos planteados. Es por ello que se hace necesario abordar las siguientes áreas de estudio: conceptos relacionados con sistemas, modelos y tipos de modelos, simulación junto con sus diferentes enfoques, haciendo énfasis en la simulación de eventos discretos; además de los conceptos de procesos productivos, así como también información del software utilizado para llevar a cabo las simulaciones.. 2.1 Conceptos básicos. 2.1.1 Sistema. La palabra Sistema es muy empleada en diferentes contextos, es por ello que se hace difícil dar una definición concreta; pero en el área de Investigación de Operaciones algunos autores la definen como:. . Según Barceló (1996) [1] un sistema es un conjunto de cosas que ordenadamente relacionadas entre sí contribuyen a determinado objeto.. . Law y Kelton (2000) [7]; “un sistema es una colección de entidades como por ejemplo personas o máquinas, que actúan e interaccionan juntos entre sí, hacia el cumplimiento de un 8.

(17) CAPITULO 2 objetivo”.. . En el portal de Ingeniería Informática www.isa.cie.uva.es sobre Simulación y Optimización [2] se define un sistema como una combinación de elementos o componentes interrelacionados y relacionados con el entorno, que actúan juntos para lograr un cierto objetivo.. Es de hacer notar en estas definiciones lo siguiente, para que un sistema esté concebido necesariamente debe estar formado por varias partes (objetos); los cuales, a su vez, deben estar interconectados por varias relaciones. De acuerdo a lo expuesto por Barceló (1996) [1], hoy día existen una diversidad de sistemas tan complejos, que se hace un tanto difícil establecer relaciones entre sus partes, es por ello que conviene realizar una descomposición en partes más pequeñas (subsistemas), permitiendo simplificar su estudio. Ejemplo de esto son los sistemas de manufactura compuestos de varios departamentos, sistemas de transporte, logísticos, de gestión de recursos y otros (ver figura 2.1).. Figura 2.1: Proceso de manufactura como sistema. Para realizar un estudio sobre un sistema es necesario el conocimiento de algunos conceptos como entidad, entidades permanentes, atributos, relación, recursos, estado y evento, los cuales se detallan a 9.

(18) CAPITULO 2 continuación: •. Entidad: Según el portal de la Universidad de Buenos Aires. http://materias.fi.uba.ar (2005) [3], una entidad es algo (objeto), que tiene realidad física u objetiva y que posee un conjunto de características (atributos) distinguibles de los demás, por ejemplo: productos, departamentos, piezas, clientes moviéndose en un restaurante, empleados, etc.. •. Entidades temporales: De acuerdo a lo expuesto por Guash et al. (2005) [8] son todos aquellos objetos que se procesan en el sistema, como por ejemplo las piezas en un sistema de manufactura, los clientes en un banco.. •. Actividades: Son las tareas o acciones que tienen lugar en el sistema. Están encapsuladas entre dos eventos. Por ejemplo, la reparación de una máquina, el procesado de una pieza o el transporte de un cliente. Según Guash et al. (2005) [8] las actividades generalmente tienen duración temporal y, normalmente, precisan del uso de recursos.. •. Atributos: Según Barceló (1996) [1] son un conjunto de propiedades que caracterizan a las entidades que forman parte del sistema, por ejemplo: cantidades de pedidos, número de máquinas de un tipo dado, color, prioridad, etc.. •. Relación: Según Hoeger (2000) [4] es la manera en que las propiedades de una o más entidades dependen entre sí; causando de esta manera que un cambio en la propiedad de una entidad ocasiona un cambio en una propiedad de otra entidad; ejemplo: En la entidad: departamento de producción, sus cambios pueden afectar a los departamentos de compra y ensamblaje.. •. Recursos o entidades permanentes: Son una clase de entidades las cuales son los medios para ejecutar las actividades. Según Guash et al. (2005) [8] los recursos definen quien o quienes ejecutan la actividad. Los recursos presentan características como capacidad, velocidad, averías y reparaciones. Ejemplo de recursos son las máquinas en un sistema de manufactura, los mecanismos de transporte o los operadores.. 10.

(19) CAPITULO 2 •. Estado: De acuerdo a Barceló (1996) [1] son los valores y/o condiciones de los atributos de las entidades en un instante dado, después de suscitarse un evento; de forma que se puede saber si una acción se puede ejecutar o si se puede elegir entre varias. Ejemplo: el número de clientes en una cola, los procesos de manufactura en cada departamento de una fábrica, etc.. •. Evento: Según Racero (2004) [5] son los diferentes hechos que ocurren en instantes de tiempo, para dar lugar a cambios en el estado del sistema y así identificar qué es lo que origina el cambio y cuando se origina. Ejemplo: Una llegada, una salida de una entidad. Una clasificación para los eventos se muestra a continuación: • Eventos condicionados: para que se activen es necesario que se cumpla una o más condiciones. • Eventos no condicionados: son los que están planificados para su ejecución y que no dependen de condiciones para su ejecución. • Eventos internos: ocurren por condiciones que impone el mismo sistema. • Eventos externos: ocurren por condiciones externas al modelo.. 2.1.2 Modelos. Luego de haber revisado los conceptos de sistema, se puede afirmar que un sistema esta conformado por varios componentes, y los componentes que conforman un sistema pueden ser descritos o representados matemáticamente. Esta representación puede hacerse mediante el uso de modelos con el objetivo de estudiar el comportamiento de dicho sistema.. Según lo afirma Barceló (1996) [1], dado que uno de los requerimientos básicos de un modelo es que este debe describir al sistema para realizar predicciones sobre el comportamiento del mismo, es decir. 11.

(20) CAPITULO 2 las características del modelo deben corresponder a características del sistema bajo estudio y operar en un rango de trabajo específico, explicación que puede representarse a través de la figura 2.2.. Figura 2.2: Correspondencia entre un sistema y modelo.. Tipos de modelos. Debido a que el campo del modelado es muy amplio, y dado que en este proyecto no se abordará en profundidad este punto, solo se hará una breve descripción (características más relevantes) de los diferentes tipos de modelos. Según Hoeger (2000) [4] de acuerdo a la realidad que representen y la perspectiva que le dé el analista, los modelos se clasifican en: • Modelos de Tiempo Continuo: Son aquellos en los cuales las variables de estado del sistema evolucionan en el tiempo de forma continua. Se pueden representar mediante ecuaciones diferenciales. • Modelos de Tiempo Discreto: Son aquellos en los cuales el estado del sistema se define sólo para instantes particulares de tiempo, por ejemplo, el número de clientes que visitan el banco un día determinado. 12.

(21) CAPITULO 2. • Modelos de Estado Continuo o de Eventos Continuos: Representan sistemas cuyos cambios de estado son graduales. Las variables que intervienen son continuas. Modelos representados por ecuaciones diferenciales donde una de las variables de estado representa una cantidad que cambia continuamente, por ejemplo, la corriente en una bobina. • Modelos de Estado Discreto o de Eventos Discretos: Son modelos dinámicos, estocásticos y discretos en los que las variables de estado cambian de valor en instantes no periódicos de tiempo, sin estar dirigidos por un reloj. Estos instantes de tiempo se corresponden con la ocurrencia de un evento. • Modelos Determinísticos: Son aquellos donde la solución para determinadas condiciones es única y siempre la misma. Ejemplo de este tipo, son los modelos de optimización lineal donde la solución está determinada unívocamente por el conjunto de ecuaciones y/o inecuaciones que se suministran como restricciones. • Modelos Probabilísticos o Aleatorios: Son aquellos donde las características del sistema se representan por variables aleatorias. Por ejemplo los simuladores de colas, donde las llegadas a estas se produce a través de una función de distribución de probabilidades. • Modelos Estáticos: Utilizados para representar sistemas cuyo estado es invariable a través del tiempo. Por ejemplo la cantidad de materia en energía E = m * c2. • Modelos Dinámicos: Contrario a los anteriores, en estos las variables de salida si varían en el tiempo, muy empleados en el área de control para modelar la dinámica de un sistema físico a través de ecuaciones diferenciales dependientes del tiempo. • Modelos Lineales: Son aquellos cuya salida del sistema se representa por una línea recta, ejemplo de estos son los modelos de regresión lineal y = aX + b. • Modelos No Lineales: Empleados para representar sistemas en donde las salidas no sean 13.

(22) CAPITULO 2 lineales, por ejemplo, la solución en el tiempo de una ecuación diferencial de segundo orden. • Modelos Abiertos: Si los datos de entrada son externos al modelo e independientes de él, ejemplo los sistemas de cola de un banco donde las llegadas son externas al modelo. • Modelos Cerrados: Estos no disponen de una entrada del exterior, ejemplo de ellos son los modelos de control en su estado natural (No hay entrada presente). • Modelos Estables: Son aquellos donde la variable de salida converge a un valor (independiente del tiempo), ejemplo cuando el intervalo de llegada de clientes es mayor que el tiempo de servicio. • Modelos Inestables: Cuando el comportamiento del sistema cambia constantemente, al contrario del anterior no hay tendencia a un valor estable, ejemplo de estos modelos son los sistemas de colas en un banco, donde el intervalo entre llegadas es menor que el tiempo de servicio.. Es de hacer notar que algunas veces los modelos y los sistemas no pertenecen al mismo tipo, ejemplo de ello según el portal de la Universidad de Buenos Aires (2005) [3] es el estudio del fluido por una cañería (dinámica de fluido) el cual corresponde a un sistema continuo. Sin embargo si el fluido se discretiza dividiéndolo en gotas y se construye un modelo discreto por el cual circulan gotas de agua (una, dos, diez, cien, mil), se está representando un sistema continuo por un modelo discreto.. 2.1.3 Simulación. De acuerdo a la opinión de Guash et al. (2005) [8] la simulación digital es una técnica que permite imitar (o simular) en un computador el comportamiento de un sistema real o hipotético según ciertas condiciones particulares de operación. Para analizar, estudiar y mejorar el comportamiento de un sistema mediante las técnicas de simulación digital es necesario, primero describir bajo un cierto. 14.

(23) CAPITULO 2 formalismo el conocimiento que se tiene sobre las dinámicas de interés (modelo conceptual), y luego codificarlo en un entorno de simulación para poder realizar experimentos y analizar los resultados.. Aunque la simulación digital es una técnica relativamente reciente y en constante evolución, el uso de la simulación como metodología de trabajo es una actividad muy antigua, y podría decirse que inherente al proceso de aprendizaje del ser humano. Es el caso, por ejemplo, de un niño jugando con unos objetos que no son más que representaciones, a escala, de objetos reales. Para poder comprender la realidad y toda la complejidad que un sistema puede conllevar, ha sido necesario construir artificialmente objetos y experimentar con ellos dinámicamente antes de interactuar con el sistema real. La simulación digital puede verse como el equivalente computarizado a este tipo de experimentación. Para ello será necesario construir objetos (modelos) que representen la realidad, de tal modo que puedan ser interpretados por un computador.. Según el portal de la Universidad Del Valle sobre Simulación Discreta (2008) [6] simulación implica crear un modelo que aproxima cierto aspecto de un sistema del mundo real y que puede ser usado para generar historias artificiales del sistema, de forma tal que nos permite predecir cierto aspecto del comportamiento del sistema. Mediante el uso de la simulación para el estudio de algún sistema se pueden hacer algunas suposiciones, más o menos precisas, acerca de su operación. El conjunto de representaciones de las características de un sistema, con frecuencia toman una forma matemática o de relaciones lógicas, y constituyen el modelo conceptual. Este modelo sirve para entender mejor el sistema, y posiblemente estudiar el impacto de ciertas modificaciones, lo cual es, básicamente, la razón del inicio de la simulación.. Según Law y Kelton (2000) [7] la simulación consiste en una evaluación numérica del modelo a través de un computador, durante un período determinado de tiempo, tomando medidas y experiencias durante este tiempo para hacer posible la descripción de su comportamiento. Estas definiciones de simulación permiten plantear suposiciones del sistema bajo estudio en cualquiera de sus etapas, para así evaluar distintos escenarios, encontrar repuestas a preguntas del tipo “qué pasara sí” y así entender o mejorar el sistema.. Barceló (1996) [1] afirma que la simulación permite realizar diversos ensayos mediante diferentes 15.

(24) CAPITULO 2 corridas de la misma con algunos cambios en el los parámetros del sistema y así probarlos en el modelo, con la finalidad de elegir la mejor alternativa.. Con respecto al sistema, modelo y simulación, Law y Kelton (2000) [7] señalan:. “luego de definir el sistema de interés, se hacen experimentos con el sistema, sí implica mucho costo, se diseña un modelo y se experimenta con él para obtener un modelo físico o matemático; y en caso de este último, emplear las técnicas analíticas y/o de simulación”. (Pag, 4). Tal y como se muestra en la Figura 2.3. Figura 2.3: Formas de estudiar un sistema.. Así, en definitiva la simulación se entiende como una técnica con la que se puede estudiar el comportamiento de un determinado sistema, mediante la experimentación con el modelo de dicho sistema y la implementación de este modelo en algún lenguaje de simulación mediante el uso de un computador, con la finalidad de generar resultados artificiales con los cuales se pueden tomar decisiones para realizar o no cambios en el sistema.. 16.

(25) CAPITULO 2. 2.1.3.1 Campos y áreas de aplicación de la simulación. Los campos y áreas de aplicación de la simulación son extensos, sin embargo, se intentará presentarlos de manera resumida en la tabla 2.1, tomada de Racero (2004) [5].. CAMPOS. APLICACIÓN. Computación. Redes de ordenadores, componentes, programación, bases de datos, fiabilidad.. Manufactura. Manejo de materiales, líneas de montaje, equipos de almacenamiento, control de inventario, mantenimiento, distribución en planta, diseño de máquinas.. Negocios. Análisis de existencias, política de precios, estrategias de marketing, estudios de adquisición, análisis de flujo de caja, predicción, alternativas del transporte, planificación de mano de obra.. Gobierno. Armamento y su uso, tácticas militares, predicción de la población, uso del suelo, prevención de incendios, servicios de policía, justicia criminal, diseño de vías de comunicación, servicios sanitarios.. Ecología y medio ambiente. Contaminación y purificación del agua, control de residuos, contaminación del aire, control de plagas, predicción del tiempo, análisis de sismos y tormentas, exploración y explotación de minerales, Sistemas de energía solar, explotación de cultivos.. Sociedad y comportamiento. Estudios de alimentación de la población, políticas educativas, estructuras organizativas, análisis de sistemas sociales, sistemas de asistencia social, administración universitaria.. Biociencias. Rendimiento en el deporte, control de epidemias, ciclos de vida biológicos, estudios biomédicos. Tabla 2.1: Aplicaciones de la Simulación. Según la tabla anterior, la aplicación de la simulación a diferentes tipos de sistemas combinada con los diferentes enfoques de estudio, conducen a una gran variedad de maneras en que se puede realizar un estudio de simulación. No obstante, hay determinados pasos o etapas básicas, los cuales se denominan: “Metodología de un estudio de Simulación”, las cuales serán explicadas en detalle a continuación: 17.

(26) CAPITULO 2. 2.1.3.2 Metodología de un estudio de Simulación. Las ideas aquí planteadas han sido tomadas de Guash et al. (2005) [8].. 1. Definición del problema y planificación del estudio. En esta etapa se definen los objetivos perseguidos por el planteamiento del problema. Si estos objetivos no se definen con claridad existirá el peligro de no abordar correctamente el problema, para el cual se ha solicitado la técnica de simulación, como vía para su posible solución.. 2. Recogida de datos. La recopilación de datos e información deben ser de fuentes creíbles, y a su vez, cuestionables. Como en el campo de trabajo esto sucede muy poco, se debe responder a las preguntas planteadas del problema, realizando hipótesis razonables en colaboración con el usuario final.. 3. Formulación del modelo conceptual. Conocidos los objetivos del problema, existirá la posibilidad (tentación) de comenzar la construcción del modelo de simulación inmediatamente en el computador. Ello conduce a obtener modelos de difícil mantenimiento; es por esto que se recomienda plantear un modelo conceptual con un nivel de abstracción superior al planteado en el código, este contemplará las relaciones estructurales más importantes del sistema y la coordinación de la sucesión de actividades que ocurrirán.. 18.

(27) CAPITULO 2. 4. Construcción del modelo. Para esto se plantearán varios modelos simplificados que caractericen las partes más esenciales del sistema, para así avanzar rápidamente a la consecución de los objetivos planteados, y así obtener un posible modelo general (decimos posible ya que un modelo tiene que estar en constante mantenimiento y verificación).. 5. Verificación, validación y pruebas. Una de las etapas más importantes en la técnica de la simulación, ya que, con una buena cantidad de pruebas se verificará que el modelo se ejecuta correctamente y según las especificaciones (modelo conceptual) y validaremos que las hipótesis planteadas, la teoría empleada y otras suposiciones son correctas; esto favorece que nuestro modelo tenga un comportamiento lo más parecido posible a la realidad.. 6. Diseño de los experimentos de simulación. Se decidirá que características del sistema se mostraran a través de las estadísticas, la duración de cada simulación, las condiciones iníciales y el número de ejecuciones (replicas); para así inferir y tomar decisiones con mayor seguridad.. 7. Análisis de los resultados. Se estudiarán los resultados obtenidos, observando carencias y mejoras, realizando un estudio de sensibilidad de las variables de estado.. 8. Documentación e implementación. En las etapas precedentes, es muy importante mantener un documento que muestre el estado del proyecto de simulación, su evolución en paralelo de cada etapa. La implementación consistirá. 19.

(28) CAPITULO 2 en tomar decisiones como fruto del estudio de simulación realizado.. Como se puede apreciar en la Figura 2.4, estos pasos en general no son secuenciales, sino iterativos, ya que, algunos de los pasos pueden tener que repetirse en función de los resultados intermedios.. Figura 2.4: Etapas en un estudio de Simulación.. 2.2 Simulación de Sistemas Orientados a Eventos Discretos. Según el articulo de Law y Kelton (2000) [7], el comportamiento discreto de un sistema permite la implementación del mismo en un programa computacional mediante una lista de sucesos futuros, un reloj que salte en el tiempo hacia el siguiente suceso, las variables de salida que miden el comportamiento del sistema y unos acumuladores estadísticos que tomen un registro de los valores de las variables de estado. 20.

(29) CAPITULO 2. 2.3 Estrategias de Simulación de Sistemas Orientados a Eventos Discretos. De acuerdo a la información encontrada en el texto de Barceló (1996) [1], los lenguajes y paquetes para la simulación de sistemas orientados a eventos discretos, fundamentalmente se elijen de acuerdo a lo atractivo de sus características, sin embargo hay una de ellas que resulta determinante e impone su filosofía, es la estrategia enfoque o visión del mundo, utilizada para la selección del suceso siguiente y la gestión del tiempo durante la simulación. Según Kiviat (1971) [13] estas estrategias o enfoques se clasifican en: •. Programación de eventos (Event Schedulling).. •. Exploración de actividades (Activity Scanning).. •. Interacción de Procesos (Process Interaction).. 2.3.1 Programación de eventos. El enfoque de Programación de Eventos (Event Schedulling), es una técnica que envuelve una secuencia de eventos incondicionados (eventos que están planificados para su ejecución y no dependen de condiciones) a lo largo del tiempo de simulación. Es por ello que los modelos de simulación expresados a través de esta técnica, se basan en considerar las operaciónes del sistema como una secuencia temporal y ordenada de eventos incondicionales.. Los eventos son acciones instantáneas que pueden cambiar el estado del modelo. Estos instantes coinciden normalmente con el inicio o final de las actividades (por ejemplo, el inicio del transporte de una pieza y el final del transporte). Según Guash et al. (2005) [8] la principal característica de esta estrategia de simulación es que tan sólo pueden codificarse las rutinas de tratamiento de eventos no 21.

(30) CAPITULO 2 condicionados. Puesto que los sistemas que se quieren simular presentan tanto eventos no condicionados como eventos condicionados, el código asociado a estos últimos se deberá incluir en el código de tratamiento de eventos no condicionados.. Después de inicializar el modelo, el código ejecutivo explora todos los futuros eventos no condicionados y mueve el reloj de la simulación hasta el evento no condicionado más cercano en el tiempo (el próximo evento). A continuación, llama al código asociado al evento para efectuar los cambios en el modelo provocados por el evento. Estas acciones incluyen efectuar los cambios derivados del evento, que pueden corresponder al inicio de una actividad y a la planificación de un evento no condicionado asociado al final de la actividad.. El mecanismo para garantizar que todos los eventos se ejecutan en orden cronológico se basa en el mantenimiento de la lista de eventos futuros (LEF). Esta lista contiene una entrada para todos los eventos no condicionados que tienen planificada su ejecución en el futuro. En la realidad, la mayoría de eventos no condicionados no se planifican, simplemente ocurren: por ejemplo la rotura de una máquina o el fin del servicio a un cliente a una entidad bancaria; en el modelo, estos eventos representan el fin de una actividad cuya duración está representada por una distribución estadística. La longitud y el contenido de la LEF cambian continuamente a medida que la simulación progresa y, por tanto, una buena gestión de la lista es fundamental para asegurar la eficiencia de la simulación. Las operaciones principales que se realizan en la lista son la eliminación del evento no condicionado que se acaba de ejecutar (el primero de la lista), la adición de un evento no condicionado y, ocasionalmente, la eliminación de un evento no condicionado.. Algoritmo: En la tabla siguiente se muestra el pseudocódigo ejecutivo para un algoritmo de programación de eventos. El primer bloque de código corresponde a la inicialización de la simulación. Los aspectos principales que se deben inicializar son:. 1. El tiempo de inicio y final de la simulación respecto al tiempo 0 de referencia.. 22.

(31) CAPITULO 2 2. El reloj de la simulación al tiempo de inicio. 3. Cálculos para obtener el estado inicial. 4. La LEF, almacenando en ella los eventos no condicionales iniciales. 5. Extraer el primer evento de la LEF y avanzar el reloj hasta el tiempo de este evento.. El segundo bloque corresponde al código repetitivo consistente en ejecutar el código asociado al evento extraído, extraer el nuevo evento más inminente de la LEF y en avanzar el reloj de la simulación hasta el tiempo de este nuevo evento.. Tabla 2.2: Código ejecutivo de la programación de eventos. Las tareas usuales que ejecuta el código para cada tipo de evento son: •. Actualizar el estado del sistema.. •. Obtener información sobre el comportamiento del sistema para actualizar las estadísticas.. •. Generar nuevos eventos no condicionados, actualizar la LEF y activar eventos condicionados. Los eventos no condicionados pueden ser, por ejemplo, el final de la actividad. Estos eventos precisan, generalmente, la obtención del tiempo futuro en que ocurrirá el evento a partir de las distribuciones 23.

(32) CAPITULO 2 de probabilidad. Si se activan eventos condicionados, la ejecución del evento se puede hacer desde este mismo bloque de código o se puede llamar a otro bloque de código (rutina) que maneja el evento condicionado.. Tabla 2.3: Código de evento de la programación de eventos. 2.3.2 Exploración de Actividades. En este enfoque se presta mayor atención al conjunto de actividades que tienen que ejecutar cada una o lote de entidades (personas, mensajes, piezas) presentes en el sistema, identificando así el conjunto de condiciones que permiten que suceda la actividad y la naturaleza de estas. Bajo este esquema el modelador, se concentra en el conjunto de condiciones que permite iniciar una actividad.. Según Pooch y Wall (2000) [14], una de las debilidades principales de este enfoque es la necesidad de tener un incremento de tiempo reducido ya que; en caso contrario, eventos que están separados en el tiempo puedan aparecer simultáneamente en el simulador. Por tanto, este incremento de tiempo tiene que ser lo suficientemente pequeño para que dos eventos separados en el tiempo también aparezcan separados en la simulación. Debido a ello y otros factores, este enfoque ha evolucionado hacia la denominada estrategia de tres fases, la cual combina el incremento de tiempo propio de la programación de eventos con la exploración de actividades. En la actualidad, esta evolución se sintetiza en los siguientes pasos: •. Extraer de la lista de eventos futuros el evento más próximo a suceder, avanzar el reloj de la simulación hasta ese tiempo y extraer el resto de eventos de la lista de eventos futuros que tienen el mismo tiempo.. 24.

(33) CAPITULO 2 •. Ejecutar todos los eventos extraídos, del paso anterior. Recordar que estos eventos son incondicionales. En esta fase se pueden liberar recursos y/o cambiar el estado del sistema.. •. Buscar todas aquellas actividades asociadas a eventos condicionados para ejecutar las que cumplen todas las condiciones. Esta búsqueda se repite hasta que no haya ninguna actividad adicional.. Es de notar que, a través de esta nueva visión de tres fases, del enfoque de exploración de actividades, se separan claramente las actividades ligadas a eventos incondicionados de los condicionados.. 2.3.3 Interacción de Procesos. Aquí el enfoque se basa en la entidad que fluye por el proceso. En donde, el proceso es definido como todo el ciclo de vida de la entidad que fluye a través del sistema. En esta técnica, se diferencian las entidades temporales (piezas, clientes, mensajes) que se mueven en el sistema, de las entidades permanentes o también llamadas recursos (grúas, máquinas, cajeros).. A través de este paradigma el analista define la situación (modelo) a resolver, desde el punto de vista de las entidades temporales que llegan al sistema, demandando múltiples recursos de capacidad limitada, esperando en colas si los recursos están ocupados o retardándose cierta cantidad de tiempo en la utilización del recurso.. Según Guash et al. (2005) [8], la popularidad de este enfoque radica en describir el modelo de simulación con bloques de alto nivel en los cuales la interacción de los procesos es tratada directamente por la herramienta de simulación, para así ahorrar gran cantidad de tiempo en la etapa de implantación del modelo. Estas herramientas manipulan los eventos incondicionales de la lista de eventos futuros, tal como se realiza en el enfoque de programación de eventos (explicada previamente).. En el desarrollo de este proyecto se utilizará el enfoque basado en la interacción de procesos, por ser este el pilar fundamental en el cual está sustentado el simulador SimPy, a través del Método de. 25.

(34) CAPITULO 2 Ejecución de Procesos (PEM Process Execution Method). 2.4 Simulación Orientada a Objetos. Recientemente ha comenzado un gran interés por la Simulación Orientada a Objetos. Esto, probablemente, como consecuencia del gran interés en general por la programación orientada a objetos. Según Law y Kelton (2000) [7] la programación y la Simulación Orientada a Objetos, nacieron de SIMULA: que es un lenguaje de simulación orientado a objeto, creado en los años de 1960, por Kristen Nygaard y Ole-Johan Dahl del Centro Noruego de Computación en Oslo, y según Fernández (2005) [9] su desarrollo se extendió desde 1962 a 1967.. Partiendo de las ideas planteadas con la creación de Simula, la Simulación Orientada a Objetos, considera que el sistema a simular, está compuesto de objetos (por ejemplo clientes), los cuales interaccionan con otros objetos a través del tiempo. En el sistema, pueden existir varias instancias de ciertos tipos de objetos (por ejemplo entidades), actualmente presentes durante la ejecución de la simulación. Estos objetos contienen datos (atributos) que se emplean para describir su estado en un punto particular en el tiempo. También poseen métodos; estos describen las acciones que son capaces de ejecutar los objetos. De acuerdo a Law y Kelton (2000) [7] los datos de un objeto únicamente pueden cambiar a través de sus propios métodos. Lo antes expuesto es lo que se conoce hoy día como el paradigma de programación orientada a objetos.. 2.5 Software de Simulación. Destacando el orden de ideas antes expuestas sobre las características que deben presentar los simuladores de sistemas orientados a eventos discretos, es posible pensar que, cualquier lenguaje de programación podría ser utilizado para simular el comportamiento de estos sistemas, aunque ello va a depender en alto grado de la estrategia adoptada y de las virtudes presentadas por el lenguaje seleccionado. Es por ello, que la mayoría de las herramientas de simulación actuales ofrecen los módulos de simulación necesarios para programar de forma rápida y habilidosa un modelo. Según Zeigler et al. (2000) [10] las características como programación de eventos, exploración de actividades 26.

(35) CAPITULO 2 e interacción de procesos presentes en los diferentes paquetes de simulación actuales reducen considerablemente el tiempo de programación del modelo y en añadidura el mantenimiento del mismo se ve enormemente simplificado.. En virtud de lo anterior, en la rama de la simulación de sistemas orientados a eventos discretos, existen los llamados “Lenguajes de Propósito General”, que son los lenguajes de programación convencionales (por ejemplo Pascal, Fortran, C++, Python). “Lenguajes de Simulación de Propósito General”, al igual que el anterior son lenguajes de programación, con la distinción que ya poseen módulos programados con características específicas para la simulación (por ejemplo GPSS, Simscript, Siman,), que aparecieron a partir de 1960.. “Paquetes de Simulación de Propósito General”, aparte de poseer módulos específicos para simulación, estos integran capacidades de animaciones para la simulación e informes de resultados (informes estándar o específicos, tabulares o gráficos, accesos a muestras individuales), permiten definir el modelo empleando un dialogo. A pesar de todas estas ventajas que pueden presentar los paquetes de simulación, estos poseen un elevado costo de adquisición (licencia para su uso). Debido a la gran popularidad que ha tomado la simulación en el campo empresarial, ciertas corporaciones se han dedicado a la construcción y mantenimiento de estas herramientas, haciéndolas privativas y de difícil acceso para el ámbito académico.. A pesar que los lenguajes de programación disponen de librerías de simulación completas para implantar cualquier tipo de modelo (continuo o discreto) por complejo que este sea, requieren de una gran inversión de tiempo y además de un conocimiento exhaustivo por parte del analista (modelador) sobre el lenguaje empleado. Por su parte, según Hoeger (2000) [4] los lenguajes y paquetes de simulación tienen como objetivo primordial facilitar el uso de la simulación en la etapa de programación del modelo y permiten al analista concentrarse en aspectos específicos del sistema. El código de estos es modular, fácil de leer y proveen herramientas para la depuración de errores, a través del trazado de sus corridas y experimentos con el modelo.. El constante desarrollo que han presentado los lenguajes de simulación desde su creación, se caracteriza por la variedad de opciones que muestran, ya que son empleados para fines específicos. 27.

(36) CAPITULO 2 Entre los más conocidos se pueden mencionar: General Purpose Simulation System (GPSS desarrollado por G. Gordon en la IBM en el año de 1961), Simulation Analysis (SIMAN, creado a mediados de 1960 por el centro Noruego de Computación), SIMULA67 (Creado por los mismos autores de Simula Kristen Nygaard y Ole Johan Dahl), GLIDER (Creado durante los años 1991-1996, en la Universidad de los Andes por IEAC & CESIMO), Simscript II.5 y SLAM por mencionar algunos.. 2.6 Python. De acuerdo con Wikipedia (2009) [11] Python es un lenguaje de programación creado por Guido van Rossum en el año 1990. Actualmente este lenguaje es comparado con TCL, Perl, Scheme, Java y Ruby. Python ha sido desarrollado como un proyecto de código abierto, administrado por la Python Software Foundation. Los nuevos usuarios de Python consideran a este mucho más limpio y elegante para programar. Este lenguaje de programación permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, sockets y hasta interfaces a GUI (interfaz gráfica con el usuario) como Tk, GTK, Qt entre otros.. Python es un lenguaje interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. También es una calculadora muy útil. El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos Monty Python.. 2.7 SimPy (Simulador en Python). Según sus propios autores Muller (2003) [12] y Vignaux, SimPy nace en el año 2002, bajo las ideas de Simulación Orientada a Objetos, las cuales fueron introducidas por SIMULA en la década de los 60. 28.

(37) CAPITULO 2 Bajo esta premisa y combinando las ideas de SIMULA y Simscript y empleando el estándar de Python, el Dr. Klauss Müller (con experiencia en la programación con Simula) y Tony Vignaux (Programador de Simscript) crean SimPy.. 2.7.1 Concepto. Según Racero (2004) [5] SimPy es un sistema de simulación de eventos discretos basado en Python. Usa procesos paralelos para modelar componentes activos tales como mensajes, individuos, piezas. Proporciona un gran número de herramientas para el analista del modelo y una interfaz que puede ser manejada en plataformas Windows y en distribuciones GNU/Linux. Incluye los procesos de las entidades a través de la creación de objetos de tipo Proceso (Process) y tres tipos de objetos recursos: Recursos, Niveles y Almacenes (Resources, Level and Stores). Además, formas de almacenar las estadísticas de la simulación, usando Monitor y Tally.. 2.7.2 Características Generales. Los elementos básicos de un modelo en SimPy son objetos de tipo proceso (por ejemplo, objetos de una clase Process). Estos son retardados por tiempos fijos o aleatorios de acuerdo a las especificaciones del modelo conceptual y colocados en cola para el uso de algunos de los recursos. Un script de SimPy contiene la declaración de una o más instancias de procesos y la creación de una serie de objetos a partir de estos. Cada objeto proceso ejecuta su Método de Ejecución de Proceso (PEM: Process Execution Method). Cada PEM se ejecuta en paralelo invocando las diferentes rutinas de los subprocesos y, además puede interactuar con varios PEM de otros objetos de tipo Process. El paquete está formado por un conjunto de módulos escritos en Python, los cuales se mencionan a continuación: •. Simulation: Es el Módulo que tiene implementada las definiciones de las clases y métodos para los objetos Process (Procesos) y Resources (Recursos), empleados en los modelos de simulación.. 29.

(38) CAPITULO 2 •. Monitor: Módulo para la compatibilidad de versiones anteriores a SimPy (por ejemplo la versión 1.7.1 con la 1.6).. •. SimulationTrace: Módulo que implementa las trazas para los eventos.. •. SimulationRT: Módulo para controlar la velocidad de la Simulación a través de la sincronización de los eventos.. •. SimulationStep: Módulo para realizar la Simulación paso a paso a través del seguimiento de los eventos.. •. SimPlot: Módulo que permite realizar gráficas de estadísticas durante la simulación. Está basado en la librerías Tk/Tkinter.. •. SimGui: Este Módulo provee las herramientas para implementar el modelo de simulación con interfaces gráficas de usuario (GUI). Al igual que el módulo SimPlot, SimGUI está basado en las librerías Tk/Tkinter.. •. Lister: Módulo empleado para darle un mejor formato de impresión a los objetos SimPy empleados por el modelo.. 2.7.3 Enfoque para la implantación de un Modelo en SimPy. De acuerdo a Muller (2003) el diseño del programa debería arrancar con un escenario que describa la situación a ser simulada. En este escenario se deben identificar los actores, sus acciones y los recursos que ellos necesitan. En el diseño, se deben escribir los ciclos de vida de los actores. Más importante aún, se deben definir cuáles son los resultados que se desean obtener de la simulación. Al lograr una comprensión del modelo conceptual a través de un análisis del mismo, se debe comenzar a implementar el código, empleando comentarios que expresen lo que hacen las diferentes sentencias (se debe recordar emplear el enfoque de las seis secciones discutido previamente).. 30.

(39) CAPITULO 2. En la primera etapa del desarrollo se recomienda utilizar SimPy.SimulationTrace en lugar de SimPy.Simulation, esto permite hacer trazas de la simulación y además ganar visión de cómo los procesos, eventos e interacciones están funcionando dentro de los comandos de SimPy. Para realizar validaciones dentro del programa SimPy que aseguren sincronizaciones entre múltiples procesos paralelos se utiliza la sentencia assert de Python. Un ejemplo sencillo de un modelo en SimPy se muestra a continuación: from SimPy.Simulation import * import random ## Model components class pieza(Process): pzlist=0 def proceso(self,factory): yield request,self,factory.maquina yield hold,self,tpintado yield release,self,factory.maquina pieza.pzlist+=1 yield put,self,factory.almacen,[pieza.pzlist] print "\n",now(),"Pieza ",pieza.pzlist, " Terminada y Colocada en Deposito \n" class declaracion: maquina=Resource(name="Maquina Pintadora",unitName="Unidad",capacity=1, qType=FIFO,preemptable=False,monitored=True,monitorType=Monitor) almacen=Store(name="Almacen",unitName="units",capacity=10,initialBuffered=[], putQType=FIFO,getQType=FIFO,monitored=True,monitorType=Monitor) ## Model def model(): initialize() for pzname,arrivaltime in piezaslist: pz=pieza(name=pzname) activate(pz,pz.proceso(factory=declaracion),at=arrivaltime) simulate(until=simtime) ## Experiment data piezaslist=[("Pieza 1",0),("Pieza 2",0.5),("Pieza 3",1.0)] tpintado=random.uniform(10,13); simtime=100 ## Experiment model() ## Analysis/output print "Las Piezas terminaron su proceso en el tiempo %s"%now(),"\n". 2.8 Procesos Productivos. Según Elegibles.net. Simulación de procesos (2009) [19] existe una maravillosa herramienta para ayudarnos al óptimo diseño tanto de operaciones como de procesos, de muy diversa naturaleza. Esta 31.

(40) CAPITULO 2 herramienta es la simulación de los procesos. Para la realización de tales simulaciones existen varios caminos, a saber, el matemático, los modelos físicos a escala o en esquemas y la simulación con programas informáticos de modelado y simulación.. Según MIPYMEs. (2009) [16] los procesos productivos pueden definirse como: “Secuencia de actividades requeridas para elaborar un producto (bienes o servicios), por medio del uso de recursos físicos, tecnológicos, humanos, etc. Y colocarlos a disposición de los clientes en condiciones ventajosas de precio, calidad y oportunidad. Un proceso productivo incluye acciones que ocurren en forma planificada y producen un cambio o transformación de materiales, objetos o sistemas, al final de los cuales obtenemos un producto.” Generalmente existen varios caminos que se pueden tomar para producir un producto, ya sea este un bien o un servicio. Pero la selección cuidadosa de cada uno de sus pasos y la secuencia de ellos ayudarán a lograr los principales objetivos de producción. 1º. Costos (eficiencia) 2º. Calidad 3º. Confiabilidad 4º. Flexibilidad Una decisión apresurada al respecto nos puede llevar al “caos” productivo o a la ineficiencia.. 2.8.1 El proceso. De acuerso al portal Wikipedia. (http://es.wikipedia.org/wiki/Proceso_Productivo) (2009) [17] los procedimientos definen la secuencia lógica de las actividades que se deben de realizar para la ejecución del proceso. ¿Cómo se hace?, ¿Qué se utiliza? y ¿Quiénes lo realizan? El diseño de un proceso se debe enfocar para proporcionar los mejores resultados en cuanto a eficiencia del mismo; es decir, debe estar diseñado de tal forma que los resultados que se obtengan consuman la menor cantidad de recursos posible.. 32.

Figure

Actualización...

Referencias

Actualización...

Related subjects :