SIMULACIÓN MIS 616
SIMULACIÓN
TEMA 2
CLAVE: MIS 616
PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ
1
SIMULACIÓN MIS 616
2. LENGUAJES DE SIMULACIÓN
2.1 Simuladores orientados a sucesos
2.2 Simuladores orientados a procesos
2.3 SMPL
2.4 Java Sim
2.1 Simuladores orientados a sucesos 2.2 Simuladores orientados
a procesos
INTRODUCCIÓN
LA COMPUTACION HERRAMIENTA IMPORTANTE PARA SIMULAR
El advenimiento de las computadoras significó un gran empuje para la
utilización de la simulación como auxiliar importante en la concreción de
proyectos.
Realizado el programa que representa al sistema que se quiere estudiar,
ensayar alternativas no es otra cosa que dar los datos a la máquina para
que esta imprima los resultados.
Utilizando los lenguajes de programación de uso universal (FORTRAN,
PASCAL, BASIC, COBOL, ALGOL, PL/I, etc.) la construcción de modelos
no es sencilla.
En cambio, si se usa un lenguaje orientado a la simulación (preparado
para construir modelos donde se pueda simular) el esfuerzo, según se
estima, se reduce a la décima parte.
Un lenguaje orientado a la simulación debe manejar:
1) Fácilmente al modelo, permitiendo el ensayo de alternativas.
2) El tiempo "simulado" (meses, días, horas, segundos, milisegundos).
3) Eventos, es decir, acciones que provocan los cambios de estado:
Los cambios de estado se materializan por dos eventos:
el de comienzo y el de finalización.
La acción está definida por :instante de comienzo y duración.
El lenguaje se encarga de hacer finalizar la acción.
2
SIMULACIÓN MIS 616
1) Variables random fácilmente definibles, generadas en forma
automática por el lenguaje.
2) Acumulación/cálculo/impresión de estadísticas de las entidades
intervinientes en el sistema
.
3) El estado del sistema en cualquier instante (imprimiéndolo en caso
necesario).
4) La extensión del período de simulación.
Muchas propiedades en programación de modelos de simulación
discreta, tales como:
• Generadores de números aleatorios.
• Generadores de variables aleatorias.
• Rutinas del siguiente evento.
• Avance de tiempo.
• Recopilación de estadísticas.
• Reportes, etc,
Han sido desarrolladas en lenguajes especiales orientados a simulación,
dejando la ardua labor de programación en FORTRAN, C o PASCAL a
lenguajes de simulación, los que incluyen facilidades de animación.
Actualmente, existen cerca de 100 software de simulación, disponibles
en una variedad de computadores(VER FIG 1.)
3
SIMULACIÓN MIS 616
Figura 1. Clasificación de software.
LENGUAJES DE SIMULACIÓN Y LENGUAJES DE
PROPÓSITOS GENERALES
La importancia de escribir modelos de simulación en lenguajes de
propósitos generales como FORTRAN radica en:
• Permite conocer los detalles íntimos de la simulación.
• Es imprescindible, cuando no se dispone de software de
simulación.
• Algunos modelos en lenguajes de simulación permiten interfaces
con lenguajes generales, específicamente FORTRAN (ocurre con
SLAM ll, SIMAN, GPSS).
Por otra parte, los lenguajes de simulación ofrecen mayores ventajas,
porque:
• Automáticamente proveen muchas de las facilidades necesarias en
la simulación del modelo.
4
SIMULACIÓN MIS 616
• Proveen un natural ambiente para modelamiento de la simulación.
• Son fáciles de usar.
Proveen una gran interacción entre edición, depuración y ejecución.
Alcanzando algunos de ellos implantación de la ingeniería de software.
CLASIFICACIÓN DE LOS SOTWARE PARA SIMULACIÓN
Existen en el mercado dos grandes clases de software para simulación:
los lenguajes y los simuladores. Un lenguaje de simulación es un
software de simulación de naturaleza general y posee algunas
características especiales para ciertas aplicaciones, tal como ocurre con
SLAM 11 y SIMAN con sus módulos de manufactura. El modelo es
desarrollado usando las instrucciones adecuadas del lenguaje y
permitiendo al analista un gran control para cualquier clase de sistema.
Un simulador (o de propósitos especiales) es un paquete de
computadoras que permite realizar la simulación para un ambiente
específico, no requiriendo esfuerzo en programación. Hoy en día existen
simuladores para ambientes de manufactura y sistemas de comunicación
permitiendo un menor tiempo en el desarrollo del modelo, así como
también contar con el personal sin experiencia en simulación.
Los simuladores son actualmente muy utilizados para análisis en alto
nivel, requiriéndose únicamente agregar detalles en un cierto nivel,
puesto que lo demás es estándar.
CACI Products Company autor de SIMSCRIPT 11.5 es también autor de
los simuladores SIMFACTORY 11.5, NETWORK 11.5 y COMNET 11.5,
muy utilizados en estos últimos tiempos para simulaciones de sistemas
de manufacturas, redes de computadoras y redes de
telecomunicaciones.
Para procesar transacciones en espera de un ordenamiento, un lenguaje
de simulación debe proporcionar un medio automático de
almacenamiento y recuperación de estas entidades. Atendiendo a la
orientación del modelamiento de una simulación discreta, existen tres
formas:
1. Programación de eventos.
2. Procesos.
3. Examinación de actividades.
5
SIMULACIÓN MIS 616
Una programación al evento es modelada, identificando las
características del evento y luego se escriben un juego de rutinas para
los eventos con la finalidad de describir detalladamente los cambios que
ocurren en el tiempo en cada evento. Lenguajes como SIMSCRIPT 11.5
y SLAM 11 están orientados al evento.
Una interacción al proceso es una secuencia de tiempos
interrelacionados, describiendo la experiencia de una entidad a través del
sistema. Por ejemplo, en un modelo de colas esta "historia" se traduce en
el paso del tiempo del ingreso a la cola, ingreso al servidor, paso del
tiempo en el servicio y fin del servicio (ver Fig. 2). GPSS, SIMAN y
SIMNET son orientados al proceso.
En el examen de actividades, el modelador define las condiciones
necesarias al empezar y finalizar cada actividad en el sistema. El tiempo
es avanzado en iguales incrementos de tiempo y en cada incremento de
tiempo, las condiciones son evaluadas para determinar si alguna
actividad puede estar empezando o terminando. El ESCL, es un lenguaje
de simulación muy popular en Europa y fue desarrollado en FORTRAN.
(Ver Tabla 1.)
6
SIMULACIÓN MIS 616
GASP IV
Es una colección de subrutinas FORTRAN, diseñadas para facilitar la
simulación de secuencia de eventos. Cerca de 30 subrutinas y funciones
que proveen numerosas facilidades, incluyendo:
• Rutinas de avance del tiempo,
• Gestión de listas de eventos futuros,
• Adición y remoción de entidades.
• Colección de estadísticas.
• Generadores de variables aleatorias.
• Reporte estándar.
El programador únicamente provee un program main, una rutina de
actualización, rutinas de eventos, generadores de reportes
personalizados y una subrutina denominada EVNTS. El programa main
debe incluir la sentencia CALL GASP; siendo GASP una subrutina que
determina el eminente evento, invocando a EVNTS escrita por el usuario
y obtiene el índice NEXT.
GASP IV es un lenguaje de simulación desarrollado por Alan B. Pristker y
N. Hurst en 1973. Es un lenguaje híbrido porque puede ser usado para
programadores de simulación discretos, continuos y combinados; siendo
el primero en integrar completamente estos dos ambientes de función del
7
SIMULACIÓN MIS 616
tiempo. GASP IV es un derivado del GASP II, y se diferencia por la
definición del evento espacio-estado (state space event).
SIMSCRIPT II.5
Desarrollado en la RAND Corporation por H. Markowtz en los inicios de
los sesenta. SIMSCRIPT 11.5. Es un lenguaje de simulación con
orientación al evento y al proceso, es híbrido porque posee facilidades
para simulación de sistemas discretos y continuos. Un programador
SIMSCRIPT 11.5 consiste de las siguientes partes:
• Preamble
• Main program
• Rutinas de eventos.
• Rutinas ordinarias.
SIMSCRIPT 11.5, producido por CACI Products Company (La Jolla,
California), fue utilizado en el pasado en grandes y complejas
simulaciones, como es el caso de los modelos no orientados a colas; por
ejemplo modelos de combates militares. Se encuentra disponible en
versión PC destacando su ambiente de S11VIGRAPHICS.
SIMSCRIPT 11.5 está basado en entidades, atributos y conjuntos.
Visualiza el mundo a ser simulado como un conjunto de entidades que
pueden ser descritas a través de sus atributos y los eventos que
aparecen en el tiempo.
SIMAN/Cinema
La versión original del SIMAN (Simulation and Analysis) fue desarrollada
por Dennis Pegden, en la Universidad de Alabama, cuando era líder del
grupo de desarrollo de la versión original de SLAM (basada en los
software de GASP y Q~GER-r de Pristker and Associates).
Más tarde, Pegden inicia su trabajo en el Pennisylvania State University
donde lo diseña como un lenguaje de modelamiento para propósitos
generales, incluyendo facilidades de manufactura muy útiles en
modelamiento de sistemas complejos de manufactura.
Desde su implementación inicial en 1984, ha sido continuamente refinado
por System Modeling Corporation, y en 1998 y 1989 el lenguaje fue
completamente rediseñado dando origen a SIMAN/Cinema.
El ambiente de modelamiento en SIMAN se desarrolla entre el Modeling
y el Experiment; en el primero se describe las componentes del sistema y
8
SIMULACIÓN MIS 616
sus interacciones y en el segundo se definen las condiciones del
experimento (longitud de la corrida, condiciones iniciales).
SIMAN modela un sistema discreto usando la orientación al proceso; es
decir, en un modelo de sistema particular, se estudian las entidades que
se mueven a través del sistema.
Una entidad para SIMAN es un cliente, un objeto que se mueve en la
simulación y que posee características únicas conocidas como atributos.
Los procesos denotan la secuencia de operaciones o actividades a
través del que se mueven las entidades, siendo modeladas por el
diagrama de bloques.
Usted construye un diagrama de bloque en un flowchart gráfico,
seleccionando y combinando bloques. Después, interactivamente,
usando un editor especial se activa el generador automático de las
sentencias del modelo desde el ambiente gráfico. Los bloques de SIMAN
se clasifican en 10 tipos básicos. (ver Fig. 3)
9
SIMULACIÓN MIS 616
SLAM II
El SIMPSCRIPT y el GASP IV son los lenguajes de programación de
eventos más destacados.
SLAM es un descendiente de GASP IV que ofrece también recursos de
simulación de redes y continuos, estando ambos codificados en
FORTRAN.
Desde los lenguajes orientados a los procesos, existen representación de
modelos en bloques como GPSS y SIMAN y los basados en redes como
Q-GERT y SLAM.
Con la llegada del PERT, se plantearon situaciones de redes complejas,
en tanto a ramificación por efecto de una decisión y loop para conseguir
que varias actividades se realicen de modo repetitivo, trayendo consigo
el desarrollo del GERT (Graphical Evaluation and Review Technique),
por Pritoker y Elaghraby; quienes lo aplicaron para el programa
Apolo.(ver Fig 4)
10
SIMULACIÓN MIS 616
El lenguaje Q-GERT significó la respuesta al cálculo de estimación de
probabilidades de terminación en cada nodo y la distribución de tiempos
y costos para la realización de cualquier nodo, la estructura básica de un
modelo de simulación Q-GERT es una red compuesta de nodos y
actividades (bifurcaciones). SLAM es una variante de QGERT que ofrece
recursos de eventos de redes y discretos (y también simulación
continua).
SLAM II (Simulation Languaje for Alternative Modeling) es un lenguaje de
simulación por el cual se pueden construir modelos con orientación al
proceso o al evento. SLAM fue desarrollado en 1979 por Dennis Pedge y
Alan Pritsker y es distribuido por Pritsker Corporation (indianapolis,
Indiana).
La parte de SLAM que se orienta a los procesos emplea una estructura
reticular compuesta por símbolos de nodos y ramas tales como colas,
servidores y puntos de decisión. Modelamiento significa incorporar esos
símbolos a un modelo de red que representa el sistema y en donde las
entidades (ítems) pasan a través de la red. SLAM contiene un
procesador que convierte la representación visual del sistema a un
conjunto de sentencias.(Ver Tabla 3).
TABLA 3 RESUMEN
Los lenguajes de simulación facilitan el desarrollo y la ejecución de
simulaciones de sistemas complejos del mundo real (Banks & Carson).
Cada lenguaje posee una orientación a situaciones del mundo real
pudiendo ser:
1. Programación de eventos.
2. Procesos.
3. Examinación de actividades.
Generalmente el modelo resultante es estos lenguajes, será con la
orientación al proceso o evento, o una combinación de ambos.
FORTRAN, es el lenguaje de programación científico, no diseñado para
usarse en simulación.
El analista cuando recurre a FORTRAN lo más probable es que utilice la
11
SIMULACIÓN MIS 616
orientación de “secuencia de eventos” (events-scheduling).
GPSS, es un lenguaje de simulación orientado al proceso,
especialmente a las transacciones (un caso especial de la orientación a
procesos). Diseñado para la simulación de sistemas de colas.
FORTRAN y GPSS, son muy utilizados para modelar en SIMULACIÓN
de sistemas discretos.
SIMSCRIPT y SLAM, son lenguajes de programación para simulación de
alto nivel y permiten facilidades en el diseño de la construcción del
modelo.
SLAM, es un sistema basado en FORTRAN y contiene al subconjunto
GASP QUE ES UN CONJUNTO DE SUBRUTINAS escritas en
FORTRAN para facilitar simulaciones orientadas al evento.
SIMSCRIPT, contiene como subconjunto a un complejo lenguaje de
programación científica comparable con FORTRAN. PL/1 y ALGOL.
GPSS junto con SIMSCRIPT, han resultado ser los lenguajes de
simulación más ampliamente usados.
La parte orientada a los eventos permite incluir rutinas en FORTRAN
para las relaciones lógicas y matemáticas que describen los cambios en
los eventos
Un modelo continuo es especificado por las ecuaciones diferenciales o
de diferencia, el que describe la conducta dinámica de las variables de
estado. El modelador codifica esas ecuaciones en FORTRAN,
empleando un juego especial de arreglos de almacén SLAM.
El SLAM simplifica el modelamiento de sistemas complejos, combinando
el uso fácil de lenguaje de proceso como GPSS y Q-GERT con la
potencia y flexibilidad del lenguaje de eventos GASP IV.
RESUMEN LENGUAJES ORIENTADOS A LA SIMULACION
Citados por orden de aparición:
1) General Purpose Simulation System (GPSS) desarrollado por Geoffrey
GORDON (IBM) tuvo su primera versión en 1961, desarrollada en
12
SIMULACIÓN MIS 616
lenguaje de máquina. Actualmente existe también una versión para PC
(desarrollada por Minuteman Software).
2) SIMSCRIPT, desarrollado por B. DIMSDALE, H. M. MARKOWITZ, B.
HAUSNER, y H. W. CARR (RAND Corporation) tuvo su primera versión
en 1962. Originalmente estuvo basado en FORTRAN.
3) SIMULA, desarrollado por O.J. DAHL y K. NYGAARD (NORWEGIAN
COMPUTING CENTER, OSLO) tuvo su primera versión en 1965.
Desarrollado como una extensión de ALGOL
.
4) SIMPL/I un lenguaje de simulación basado en PL/I, introducido por
IBM en 1972.
También pueden citarse:
1) A General Activity Simulation Program (GASP), basado también en
lenguaje FORTRAN.
Fue desarrollado por Philip J. KIVIAT y puede ser utilizado en cualquier
máquina que posea compilador FORTRAN.
2) SIMULATE, lenguaje escrito en FORTRAN IV, por Charles C. HOLT y
otros colaboradores del SOCIAL SYSTEMS RESEARCH INSTITUTE, de
la Universidad de WISCONSIN, utilizado para construcción de modelos
econométricos, los que contienen mecanismos complejos de
retroalimentación.
3) General Simulation Program (GSP), desarrollado por el Dr. K. D.
TOCHER y sus colegas de la empresa UNITED STEEL COMPANIES
LTD de INGLATERRA (1960) escrito para la computadora Ferranti
Pegasus y la Elliot 503, se usó en Europa y el Reino Unido.
Posteriormente para la máquina Elliot surgió el ESP desarrollado para
ALGOL y para la Ferranti Pegasus I el MONTECODE (usado para
planeamiento industrial).
4) Control and Simulation Language (CSL), un lenguaje desarrollado en
base a FORTRAN por John BUXTON, extendido por Alan
CLEMENTSON.
En modelos representados por ecuaciones, se puede citar:
1) DYNAMO (Dynamic Models), desarrollado por Phyllis FOX y
Alexander L. PUGH del MASSACHUSETTS INSTITUTE of
TECHNOLOGY (M.I.T.) Utiliza ecuaciones diferenciales de primer orden
para aproximar procesos continuos.
13
SIMULACIÓN MIS 616
Es apropiado para simular cierto tipo de sistemas dinámicos de
información con retroalimentación, definibles con un conjunto de
ecuaciones de diferencias finitas. Se lo ha usado mucho para simular
sistemas económicos de gran escala (modelos econométricos); se lo
puede usar en modelos biológicos, físicos y sociales.
2) CSMP (Continuos System Modeling Programs), desarrollado por IBM,
en una mezcla con FORTRAN; DSL/90 (Digital Simulation of Continuos
Systems); MIMIC; BHSL (Basic Hytran Simulation Language); DIHYSYS
para Borroughs B5500 son lenguajes orientados a resolver problemas
planteados con ecuaciones diferenciales.
2.3 SMPL
Dentro de los entornos de programación Simple Portable Simulation
Language (SMPL) (MacDougall M. H., 1987). SMPL es una biblioteca
para simulación que facilita el desarrollo y la ejecución de simulaciones
de sistemas orientada a sucesos.
Las librerías contienen funciones que realizan las tareas más comunes
de forma que el programa solo tiene que concentrarse en la
implementación de las particularidades de su sistema. Estos diseños se
realizan en cualquiera de los lenguajes como C, PASCAL, ADA, ETC..
Las ventajas son su flexibilidad pues el diseñador puede incluir cualquier
detalle en su programa, su velocidad de ejecución y su portabilidad.
Dentro de sus desventajas son la dificultad de verificación y detección de
errores y su largo tiempo de desarrollo.
Ya que son lenguajes, el compilador es capaz de detectar incongruencias
antes de su ejecución y por tanto disminuyen considerablemente el
tiempo de desarrollo. En donde estas librerías se han especializado a
rutinas para entornos particulares como comunicaciones, sistemas de
fabricación flexible, etc.
SMPL es un entorno de programación originalmente escrito en C,
aunque se ha traducido a Pascal para facilitar su uso.
En SMPL hay tres entidades: estaciones de servicio, marcas (tokens) y
eventos.
• Estaciones de servicio,
Son la representación de los recursos compartidos del sistema.
Una estación de servicio se caracteriza por un conjunto de
14
SIMULACIÓN MIS 616
servidores y al correspondiente cola para alojar a los clientes que
esperan ser atendidos. SMPL tiene funciones para definir las
estaciones de servicio, usarlas y ver su estado.
• Marcas (tokens),
Cuando un nuevo cliente entra en una estación de servicio se le
crea una estructura de datos que le que le acompañará hasta que
salga. En la estructura es anota por ejemplo el instante de tiempo
en el que se produce el acceso a la estación, pudiéndose calcular
a partir de esa información el tiempo que tuvo que esperar el
cliente en la cola. SMPL provee al programador de un mecanismo
que permite marcar estas estructuras con un número de forma
que podamos identificarlas.
En general, no se requiere un nivel de detalle individual sino que
es suficiente con agrupar a los clientes en clases y asociar a cada
una de éstas una marca.
De esta forma el programa será capaz de calcular estadísticas
específicas para cada clase de clientes. La marca también puede
serle útil al programador, por ejemplo, podría se un índice que
permita acceder a un elemento de un “array” en el que se guardan
algunos atributos de la clase. Por ejemplo, en un sistema de
comunicaciones que maneje dos tipos de paquetes, uno de control
y otro de datos, un atributo podría ser la longitud media del
paquete.
Cada marca suele llevar asociada una prioridad, pero ésta la
introduce manualmente el programador cada vez que se realiza
una petición de servicio en una estación. Esto se ha pensando así
pues la prioridad de las clases puede variar de unas estaciones de
servicio a otras.
• Eventos,
Es un cambio en el estado del sistema SMLP que proporciona
funciones para registrar eventos y para seleccionar eventos de
acuerdo a su tiempo de ocurrencia. Un evento es identificado por
un número, por el tiempo de simulación en el que ocurre y
posiblemente por el identificador de la marca involucrada.
Un programa de simulación en SMLP se descompone de una parte
inicialización, una paret de control y un conjunto de funciones que
permiten realizar las tareas necesarias asociadas a la ocurrencia del
15
SIMULACIÓN MIS 616
evento. En la parte de control se selecciona el próximo evento que va
ocurrir y de acuerdo a este se desencadenan las tareas necesarias.
16
SIMULACIÓN MIS 616
17
SIMULACIÓN MIS 616
18
SIMULACIÓN MIS 616
19
SIMULACIÓN MIS 616
20
SIMULACIÓN MIS 616
21
SIMULACIÓN MIS 616
22
SIMULACIÓN MIS 616
SMLP SIMULATION REPORT
23
SIMULACIÓN MIS 616
2.4 JavaSim
Dentro de los entornos de programación es una biblioteca para
simulación que facilita el desarrollo y la ejecución de simulaciones de
sistemas orientada a Procesos.
Javasim: es una implementación en Java la cual utiliza los
procedimientos y funciones del paquete de simulación C++SIM,
desarrollado como una consecuencia directa de la búsqueda conducida
dentro del ámbito del proyecto Arjuna [3]. Entre las características más
sobresalientes se encuentran
W Fácil de aprender y usar: contiene una librería para la interfaz de
simulación claramente
entendible.
W Abstracto-correcto: existen programadores Java que pueden no
encontrar el método de
simulación en conflicto con el paradigma presentado por la programación
Java, y para librar este inconveniente prefieren usar otra interfaz Java
más sencilla.
W Flexible y extensible: este puede resultar fácil para que cualquiera
agregue nuevas
funcionalidades al sistema, por ejemplo nuevas funciones de distribución.
W Eficiencia: los tiempos de respuesta son cortos, permitiendo contar con
resultados de manera rápida y eficiente.
Según la experiencia de Parrington los paquetes de simulación de los
cuales conoce, tienden a ser extremadamente lentos y a consumir
grandes recursos del sistema
24
SIMULACIÓN MIS 616
25
SIMULACIÓN MIS 616
26
SIMULACIÓN MIS 616
27
SIMULACIÓN MIS 616
28
SIMULACIÓN MIS 616
29
SIMULACIÓN MIS 616
30
SIMULACIÓN MIS 616
31
SIMULACIÓN MIS 616
32
SIMULACIÓN MIS 616
33
SIMULACIÓN MIS 616
34
SIMULACIÓN MIS 616
35
SIMULACIÓN MIS 616
36
SIMULACIÓN MIS 616
37
SIMULACIÓN MIS 616
38
SIMULACIÓN MIS 616
39
SIMULACIÓN MIS 616
40
SIMULACIÓN MIS 616
41