1. REPÚBLICA BOLIVARIANA DE VENEZUELA
MINISTERIO DEL PODER POPULAR PARA LA DEFENSA
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITECNICA
DE LA FUERZA ARMADA BOLIVARIANA
NÚCLEO MIRANDA
EXTENSIÓN SANTA TERESA DEL TUY
CARRERA: ING. SISTEMA
SECCIÓN: SIS08-01 I-2013
Lenguaje de
Simulación
PROF.
BACHILLER:
ING. H. Rojas.
JESÚS M. MORALES S.
SANTA TERESA DEL TUY, ENERO DE 2014
2. Introducción
En la vida real se presentan situaciones o sucesos que requieren tomar
decisiones para planificar, predecir, invertir, proyectar posibles soluciones a
problemáticas planteadas al momento de efectuar una simulación.
Para eso es importante el conocimiento del problema o de la situación y de
las posibles soluciones, donde juegan un papel de importancia herramientas que
permiten la obtención de información, como la modelización y la simulación. Los
datos que se obtienen permiten predecir el comportamiento actual y futuro en
distintos escenarios mediante una serie de experiencias realizadas con un
programa informático.
Cualquiera sea la aplicación para simular, sea un programa comercial
específico o una aplicación con lenguaje de propósitos generales, requieren
conocer y manejar una serie de procedimientos y criterios para obtener datos y
para analizarlos para tomar decisiones que permitan optimizar los procesos.
3. Lenguaje de Simulación
El desarrollo de los lenguajes de Simulación comenzó a finales de los años
cincuenta; inicialmente los lenguajes que se usaron en fueron los de propósito
general, los cuales tenían las siguientes ventajas:
La situación a analizar se puede modelar en forma más o menos sencilla
Para el programador por el conocimiento del lenguaje.
El proceso se puede describir con tanta precisión como le sea posible en el
lenguaje conocido.
Se pueden realizar todas las depuraciones posibles.
Cualquier lenguaje de programación puede ser empleado para trabajar en
Simulación, pero los lenguajes especialmente diseñados presentan las siguientes
propiedades:
Acaban la tarea de programación.
Generan una guía conceptual.
Colaboran en la definición de entidades en el sistema.
Manejan la flexibilidad en los cambios.
Ayudan a analizar y a determinar la relación y el número de entidades en el
sistema.
Emshoff y Sisson consideran que la Simulación Discreta requiere de ciertas
funciones comunes que diferencian un lenguaje de Simulación de uno de
propósito general, entre las cuales se encuentran las siguientes:
Generar números aleatorios.
Generar variables aleatorias.
Variar el tiempo hasta la ocurrencia del siguiente evento.
Registrar datos para salida.
Realizar análisis estadístico sobre datos registrados.
Construir salidas en formatos determinados.
Detectar inconsistencias y errores.
Entre estos lenguajes específicos podemos nombrar los siguientes: MIDAS,
DYSAC, DSL , GASP, MIMIC, DYNAMO, GPSS, SIMULA, CSSL( Continuous
System Simulation Language) , CSMP, ACSL ( Advanced Conrinuous Simulation
Language), DARE-P and DARE-Interactive, C-Simscript, SLAM, SIMAN, SIMNON,
SIMSCRIPT-II-5, ADA, GASP IV, SDL.
4. Muchos de estos lenguajes dependen fuertemente de los lenguajes de
propósito general como es el caso de SLAM o SIMAN que dependen de Fortran
para las subrutinas.
Por otro lado, el GPSS es un caso especial de un lenguaje de simulación de
propósito especial, altamente estructurado que esta orientado a la transacción, un
caso especial de una orientación basada en procesos más general. El GPSS fue
diseñado para la simulación simple de sistemas de colas tales como trabajos de
taller. A diferencia de los otros lenguajes de simulación, GPSS tiene varias
implementaciones incluyendo GPSS/H y GPSS/PC, ambos de los cuales serán
discutidos mas adelante. El SIMAN V, SIMSCRIPT II.5, y el SLAM son lenguajes
de simulación de alto nivel que tienen constructor especialmente diseñados para
facilitar la construcción de modelos. Estos lenguajes proveen al analista de
simulación con una opción orientación basada en procesos o basada en eventos,
o un modelo usando una mezcla de las dos orientaciones. A diferencia del
FORTRAN, estos tres lenguajes proveen la administración de la lista de eventos
futuros, generador interno de variables aleatorias, y rutinas internas para la
obtención de estadísticas (estas características para las implementaciones del
GPSS mencionadas previamente.) Se pueden lograr calculo complejos en ambas
implementaciones del GPSS y estos tres lenguajes.
El SIMAN, SIMSCRIPT II.5, y el SLAMSYSTEM proveen la capacidad de
realizar simulación continua ( esto es, para modelar sistemas que tengan
continuamente cambios en sus variables de estado) pero este tema no esta dentro
del alance de este libro.
El SIMAN esta escrito en C, aunque las primeras versiones del lenguaje fue
escrito en FORTRAN.
El SIMAN V puede ser acezado directamente, o a través del medio
ambiente del ARENA. El SLAMSYSTEM contiene al lenguaje de simulación SLAM
II. El SLAM II esta basado en el FORTRAN y contiene al lenguaje GASP como un
subconjunto. El GASP es un conjunto de subrutinas en FORTRAN para facilitar las
simulaciones orientadas al objeto escritas en FORTRAN. El SIMSCRIPT II.5 por
otro lado, contiene un subconjunto de un completo lenguaje científico de
simulación comparable con el FORTRAN, C o C++. El MODSIM III es un
descendiente del lenguaje que la compañía de productos CACI originalmente
diseñado por la armada de los Estados Unidos. Hereda mucha de su sintaxis del
MODULA-2 y del ADA, ciertas características del ADA y sus conceptos de
simulación del SIMSCRIPT y el SIMULA. Algunas de las características de la
5. simulación orientada al objeto fueron originalmente vistas en el SIMULA y el
SMALLTALK.
Ventajas de los lenguajes de simulación
Dan fiabilidad a los resultados
Permiten ahorrar tiempo
Permiten concentrarse en el problema y no en la programación
Abren el campo a no expertos en informática
Estructura Del Lenguaje.
Dentro de un programa de GPSS se pueden distinguir cuatro tipos de
instrucciones, cada una de las cuales se detalla a continuación:
• Instrucciones de acceso al sistema GPSS
Estas instrucciones permiten al usuario el acceso al compilador del GPSS y
dependen de cada tipo de versión utilizada: en este punto se recomienda hacer
referencia al manual respectivo.
• Instrucciones de definido de variables
Estas instrucciones siempre se encuentran relacionadas con las
instrucciones de lógica del programa. Dentro de las instrucciones se encuentran
las siguientes: definición de las funciones a utilizar, definición de la capacidad de
los almacenes, definición del número de operarios o maquinas por estación,
inicialización de variables, definición de las operaciones matemáticas por utilizar,
etcétera. A continuación de muestra una lista de las definiciones más comunes
utilizadas en GPSS:
|Definición de funciones | FUNCTION |
|Definición del número de máquinas | STORAGE |
|Definición de matrices | MATRIX |
|Asignación numérica a variables | EQU |
|Inicialización de variables | INITIAL |
|Definición de histograma | TABLE |
|Definición de operaciones | VARIABLE y FVARIABLE |
• Instrucciones de lógica del programa
6. Este tipo de instrucciones son las conocidas como bloques; son las que se
ejecutaran durante la simulación; la lógica dependerá de cada sistema que se
desee simular. Teniendo en cuenta la función que realizan, una clasificación de los
bloques o instrucciones de lógica es la siguiente:
Simulación de inicio de proceso y captura de máquina
SEIZE
ENTER
PREEMPT
Simulación de fin de proceso y liberación de máquina
RELEASE
LEAVE
RETURN
Simulación de entradas de transacciones a un almacén
QUEUE
ENTER
LINK
Simulación de salidas de transacciones a un almacén
DEPART
ENTER
UNLINK
Simulación de entrada de transacción del sistema
GENERATE
SPLIT
Simulación de salidas de transacciones del sistema
TERMINATE
Simulación de diversos tipos de procesos
ADVANCE
ASEEMBLE
MATCH
7. GATHER
Simulación de control de flujo de transacciones
TRANSFER
TEST
GATE
LOGIC
SELECT
LOOP
BUFFER
Bloques de operaciones aritméticas
SAVEVALUE
MSAVEVALUE
ASSIGN
INDEX
PRIORITY
Bloques de creación de estadísticas
TABULATE
Las instrucciones de tipo b) y c) se codifican siguiendo un formato general,
dentro del cual se pueden distinguir los siguientes elementos:
|2 |8 |19 |31 |
|Loc |Bloque |Operandos |Comentarios |
Donde:
Loc: Representa el nombre de una etiqueta o una dirección. La etiqueta es
un campo opcional y su existencia depende de la lógica del programa. Esta
localizado en la columna 2. Su función es simular a las etiquetas en Fortran o
Basic.
8. Bloque: Es la instrucción específica por ejecutar.
Operandos: Cada bloque representa la acción por ejecutar, sin embargo, es
necesario incluir un documento, como puede ser la duración o el lugar de dicha
acción.
Comentarios: Es el espacio donde el usuario puede colocar cualquier
indicación o identificación de la instrucción.
• Instrucciones de control de la simulación.
Estas instrucciones son las que controlan la ejecución, edición, y manejo de
archivos en GPSS/PC. Las principales son: END, START, SIMULATE.
Lenguajes Específicos De Simulación.
La razón por la que se han desarrollado lenguajes específicos para
simulación es porque la mayoría de las simulaciones de eventos discretos tienen
bastantes elementos en común como por ej. Generar números aleatorios, avanzar
el reloj de simulación, determinar el próximo suceso de la lista de sucesos,...
Ventajas frente a los lenguajes de propósito general:
Programas más cortos:
Están preparados para llevar la contabilidad de los distintos parámetros.
Tienen módulos para generar números aleatorios de las distintas
distribuciones.
Al tener menos líneas de código:
Se reduce el tiempo de programación
Es más fácil detectar posibles errores
Es más fácil cambiarlo si queremos introducir alguna variación
Además hay una serie de errores típicos que suelen ser identificados y
chequeados de forma automática.
Inconvenientes frente a los lenguajes de propósito general:
Son menos flexibles, y su sintaxis tiende a ser menos natural
Las ejecuciones son más lentas (pueden tardar hasta 8 veces más),
siempre y cuando el programa de lenguaje general esté diseñado de una
forma eficiente. Esto es debido a que están diseñados para modelizar una
amplia variedad de sistemas con un conjunto de bloques ya construidos,
9.
mientras que los de propósito general pueden ir directamente al caso
particular que se trate.
Son menos conocidos por analistas y programadores, y los compiladores
son menos accesibles
El lenguaje C es el más utilizado en simulación.
Características De Los Lenguajes De Simulación.
En la actualidad los lenguajes que existen en el mercado tienen una serie
de características propias que los distinguen de otros, entre esas características
están las siguientes:
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
El procedimiento utilizado para generar los números aleatorios uniformes y
las variables no uniformes conocidas.
Los procedimientos o métodos utilizados para generar las variables
aleatorias no-uniformes mas conocidas y mas usadas.
La forma de adelantar el reloj de simulación, que puede hacerse con
incrementos de tiempo fijo como DYNAMO o con incrementos al próximo
evento como GPSS.
El análisis estadístico de los resultados de simulación.
El formato en que los resultados de la simulación son representados.
La forma en que las inconsistencias y errores de lógica es reportada.
El lenguaje en el cual el paquete esta escrito, el cual puede ser: Fortran,
Algol, PL/1, Asembler, etc.
Los diferentes tipos de computadoras cuyo compilador es compatible con el
del paquete en cuestión.
Cualquiera de los lenguajes de simulación tienen sus propias ventajas y
desventajas y no se puede decir que un lenguaje es mejor que otro.
Generalmente, entre mas fácil de aprender y de usar sea un lenguaje, menor será
su flexibilidad y su eficiencia. Por consiguiente, decidir que lenguaje utilizar en una
aplicación, especifica, no es tarea fácil de realizar.
Clasificación De Los Lenguajes De Simulación.
Existen distintos tipos de simulación de modelos:
Simulación Discreta: tiene que ver con el modelado de un sistema que
evoluciona en el tiempo mediante una representación en la cual las variables de
estado cambian instantáneamente, cuando ocurren eventos. Aunque la simulación
discreta podría conceptualmente ser realizada mediante cálculos manuales, la
10. cantidad de datos que deben ser almacenados y manipulados en la mayoría de los
sistemas del mundo real obliga a que la simulación discreta sea realizada en
computadoras digitales.
Simulación Continua: se aplica cuando las variables de estado cambian
continuamente con respecto al tiempo. Típicamente, los modelos de simulación
continua involucran ecuaciones diferenciales que dan relaciones para las tasas de
cambio de las variables con el tiempo. Si las ecuaciones diferenciales son
particularmente simples, pueden ser resueltas analíticamente para dar los valores
de las variables de estado para todos los valores del tiempo como una función de
los mismos en el tiempo 0 o inicial. Sin embargo, para la mayoría de los modelos
continuos, no son posibles soluciones analíticas, y se usan técnicas de análisis
numérico, por ejemplo, la integración Runge-Kutta, para resolver las ecuaciones
diferenciales numéricamente, dados valores específicos para las variables de
estado en el tiempo 0.
Simulación Discreta-Continua Combinada: Como algunos sistemas
no son ni completamente discretos ni completamente continuos, la
necesidad puede llevar a construir un modelo con aspectos tanto de
simulación discreta como continua, resultando en una simulación
combinada discreta-continua. Los tres tipos fundamentales de interacciones
que pueden ocurrir entre variables de estado cambiando continuamente y
discretamente son:
1. Un evento discreto puede causar un cambio discreto en el valor de una
variable de estado continua.
2. Un evento discreto puede causar que la relación que gobierna una
variable de estado continua cambie en un momento particular.
Etapas en el desarrollo de un Modelo de Simulación
En el siguiente diagrama se muestran las etapas en el desarrollo de un
modelo de simulación:
a) Formulación del problema y planificación del estudio: cada estudio
debe comenzar con una sentencia clara de los objetivos globales del
estudio y las cuestiones específicas a ser atendidas; sin esta sentencia hay
poca esperanza de éxito. El estudio completo debe ser planeado en
términos del número de personas, los costos, y el tiempo requerido para
cada aspecto del estudio.
11. b) Recolección de datos y definición de un modelo: la información y los
datos deben ser tomados sobre el sistema de interés (si existe) y usado
para especificar los procedimientos operativos y distribuciones de
probabilidad para las variables aleatorias usadas en el modelo. Por
ejemplo, en el modelado de un banco, se podrían recolectar los tiempos
entre arribos y los tiempos de servicio y usar esos datos para especificar
distribuciones de tiempos inter-arribos y de servicios para usarlas en el
modelo. Si es posible, los datos sobre el rendimiento del sistema, por
ejemplo, demoras en la cola de clientes de un banco, deben ser
recolectados para propósitos de validación en etapas posteriores.
c) Validación: aunque la validación es algo que debe ser hecho a lo largo de
todo el estudio de simulación, hay varios puntos en el estudio donde la
validación es particularmente apropiada.
d) En la construcción del modelo es útil incorporar personas que estén
íntimamente familiarizados con las operaciones del sistema actual y los que
deben tomar decisiones regularmente. Así se incrementará la validez del
modelo y la credibilidad (o validez percibida) por parte de los responsables
de decisiones también crecerá. Otro punto para validar es en la adecuación
de las distribuciones de probabilidad especificadas para la generación de
variables aleatorias de entrada, que debe ser testeadas usando pruebas de
bondad de ajuste.
e) Construcción de un programa de computación y verificación: el
modelador debe decidir si programar el modelo en un lenguaje de propósito
general, o en un lenguaje de simulación diseñado especialmente o
simulador. Un lenguaje de
programación de propósito general
probablemente ya será conocido y estará disponible. Un lenguaje de
simulación puede reducir el tiempo de programación requerido
significativamente. La verificación de un modelo programado significa que
en las corridas no se produzcan errores.
f) Realización de corridas de prueba: las primeras corridas con el modelo
verificado se hacen con propósitos de validación. Son pruebas de corridas
con resultados conocidos para verificar si el modelo está bien programado y
para validar las salidas de simulación con datos reales.
g) Validación: las corridas de prueba pueden ser utilizadas para chequear la
sensibilidad de la salida del modelo a pequeños cambios en un parámetro
de entrada. Si la salida varía mucho, se debe obtener una mejor estimación
del parámetro de entrada. Si existe un sistema similar al de interés, los
datos de salida pueden ser comparadas con aquellas del sistema existente
actual. Si el acuerdo es bueno, el modelo validado es modificado de
manera que represente el sistema de interés, siempre que esta
modificación no sea demasiado costosa.
12. h) Diseño de experimentos: consiste en organizar las corridas de simulación
con cambios en los valores de las variables de entrada. Se debe
seleccionar el o los diseño/s de sistema y realizar las corridas. Por cada
diseño de sistema a ser simulado se deben tomar decisiones sobre las
condiciones iniciales para las corridas, la longitud de tiempo de puesta en
marcha (si hubiera), la longitud de la o las corrida/s, y el número de corridas
de simulación independientes a realizar para cada grupo de datos de
entrada.
i) Realización de las corridas de producción: Las corridas de producción
se hacen para proveer datos de rendimiento de los diseños del sistema de
interés.
j) Análisis de los datos de salida: Se utilizan técnicas estadísticas para
analizar los datos de salida de las corridas de producción. Los objetivos
típicos son construir un intervalo de confianza para una medida de
performance para un diseño de sistema particular o decidir cual sistema
simulado es el mejor relativo a alguna medida específica de performance.
k) Documentación, presentación, e implementación de resultados: Como
los modelos de simulación son comúnmente usados para más de una
aplicación, es importante documentar las suposiciones que se hicieron en el
modelo como así también el programa de computadora mismo. Finalmente,
un estudio de simulación cuyos resultados nunca son implementados es
probablemente una falla. Además, los resultados de modelos altamente
creíbles serán probablemente usados.
Tendencias Actuales de la Simulación.
Generadores de simuladores, entornos de simulación y animación gráfica.
Los lenguajes de simulación presentan una serie de limitaciones en lo que
se refiere a la comunicación con el usuario, por lo que se propone una
metodología donde se incorpore de manera directa los conceptos fundamentales
de la teoría de sistemas donde se incluye:
La modelización:
El modelizador debería tener la posibilidad de elegir diversos formalismos
de modelización según las características del sistema que pueden ser entre otros
continuos y discretos; pudiéndose concebir también modelos de sistemas cuya
estructura varíe con el tiempo, es decir habría la posibilidad de especificar
cambios controlados por el modelo en su estructura estática y dinámica. Por lo
cual la modelización debe constar de:
Selección del formalismo de modelización.
13.
Manipulación del modelo. Descomposición del modelo en sub modelos.
Construcción modular del modelo. Construir macro modelos acoplando e
integrando modelos de subsistemas.
Marcos Experimentales
Posibilidad de su manipulación interactiva.
Programas de Simulación
Especificación algorítmica de los programas de simulación que permita un
tratamiento automático de los pares modelo – marco experimental, lo que supone
una especificación del lenguaje de simulación que haga posible:
•Una expresión modular de los modelos y sus acoplamientos e interacciones de
acuerdo con los diferentes formalismos de modelización.
•Una especificación modular de los marcos experimentales.
La consecuencia de todos los requisitos y especificaciones mencionados es
una metodología de simulación, y un lenguaje que la materialice, lo cual haría
posible un proceso de modelización asistida por computador.
Simulación Visual Interactiva.
La simulación visual interactiva puede definirse como aquella que posibilita
la creación gráfica de modelos de simulación, permite mostrar por pantalla
dinámicamente el sistema simulado, así como la interacción entre el usuario y el
programa en ejecución. La interacción implica que la simulación se detiene y
solicita información al usuario, o bien que puede parar la simulación a su voluntad
e interaccionar con el mencionado programa.
Actualmente hay varios paquetes comerciales que incorporan plenamente
estos conceptos como por ejemplo: Simfactory, Witness, FACTOR/AIM. Todos
estos productos están orientados primordialmente a la utilización de la simulación
para la resolución de problemas en el ámbito de la producción
14. Conclusion
Para el presente trabajo
se ha llegado a la siguiente conclusión, sea
determinado que es necesario el llevar acabo la planificación de la simulación ya
que esta nos permite analizar sucesos de la vida real permitiendo predecir lo que
podría ocurrir en determinados procesos.
La simulación de sistema nos permitirá optimizar el tiempo de respuesta
para el momento de realizar o diseñar algún proyecto ya que este nos ayuda a
planificar como vamos a elaborar este, obteniendo este como resultado una mayor
eficacia, rapidez y fiabilidad en las actividades realizadas durante cada paso a
seguir.