Sunteți pe pagina 1din 21

Software de simulacin

Presentacin Clasificacin del software de simulacin Paquetes frente a lenguajes de propsito general

Caractersticas deseables del software Ejemplos

Lenguajes de simulacin

2006-2007

Funciones generales
Parece claro que para programar cualquier modelo de simulacin se necesita un conjunto de funcionalidades: 1.- Generacin de nmeros aleatorios, observaciones de U(0,1). 2.- Generacin de variables aleatorias de varias distribuciones, por ejemplo la exponencial. 3.- Mecanismo de avance del tiempo simulado. 4.- Determinacin del siguiente evento a tratar de la lista de eventos y pasar el control al mecanismo de tratamiento de dicho evento. 5.- Aadir o eliminar elementos de una lista 6.- Recoger estadsticas y presentar los resultados. 7.- Detectar condiciones de error. Esto es lo que se debe exigir de un paquete de simulacin.

Lenguajes de simulacin

2006-2007

Ventajas de los paquetes de simulacin (I)


Kobayashi (1) y Law & Kelton plantearon la misma cuestin con 22 aos de diferencia, lo que nos permite apreciar lo que ha cambiado a lo largo del tiempo. Kobayashi: Proporcionan una representacin conveniente de los elementos que aparecen normalmente en los modelos de simulacin. Facilitan los cambios de configuracin del modelo. Proporcionan un mecanismo de control y una temporizacin interna para ejecutar una simulacin. Facilitan la recogida de datos y las estadsticas sobre el comportamiento agregado del sistema simulado y proporcionan informes en un formato adecuado.
(1) La referencia es al libro:H. Kobayashi, "Modeling and Analysis: An Introduction to System Performance Evaluation Methodology", Addison-Wesley, 1978
Lenguajes de simulacin 2006-2007

Ventajas de los paquetes de simulacin (II)


Law & Kelton: Los paquetes de simulacin proporcionan la mayora de las caractersticas para construir un modelo de simulacin, consiguiendo como resultado una disminucin del tiempo de programacin y del coste del proyecto. Proporcionan un marco natural para realizar modelos de simulacin, puesto que sus construcciones bsicas estn ms prximas a la simulacin que las suministradas por un lenguaje de programacin de propsito general. Los modelos son mas fciles de modificar y mantener. Proporcionan una correccin de errores mejor, puesto que muchos errores potenciales se comprueban de forma automtica.

Lenguajes de simulacin

2006-2007

Ventajas de los lenguajes de propsito general (I)


Kobayashi: No se tiene porqu disponer necesariamente de un paquete de simulacin. Nadie de tu entorno conoce un lenguaje especfico de simulacin y aprender uno suele precisar un cierto tiempo. Las facilidades de depuracin en un paquete de simulacin pueden no ser tan sofisticadas como las proporcionadas por un lenguaje de programacin de propsito general. Los lenguajes de propsito general son ms eficientes, porque normalmente utilizan compiladores muy optimizados. Podra interesar construir algn esquema de control especial (o una recogida de datos o un informe) en el paquete de simulacin y el entorno de trabajo no permitrtelo.
Lenguajes de simulacin 2006-2007

Ventajas de los lenguajes de propsito general (II)


Law & Kelton: La mayora de las personas que modelan conocen un lenguaje de programacin pero no un paquete de simulacin. Eficiencia de la ejecucin, eficiencia de la representacin (en los paquetes se deben utilizar las construcciones especficas, independientemente si dicho conjunto pudiera ser mejorable o no). Los entornos de programacin habituales (C, C++) son mucho ms baratos. El coste del proyecto puede ser, en el caso contrario, significativamente ms elevado. Como se ve, tanto para las ventajas de uno u otro caso los argumentos no han variado en los 22 aos de diferencia entre ambas. A la vista de lo anterior parece que la eleccin o no de un paquete de simulacin est condicionada por muchas consideraciones, no todas ellas racionales.
Lenguajes de simulacin 2006-2007

Clasificacin del software de simulacin


Paquetes de propsito general frente a paquetes orientados a aplicaciones. - Lenguajes de simulacin. Naturaleza general. - Simuladores orientados a aplicaciones. Por ejemplo: fabricacin, salud, centralitas, etc. Aproximaciones de modelado. - Aproximacin orientada a la planificacin por eventos. - Aproximacin orientada a procesos. Un proceso es una secuencia de eventos ordenada en el tiempo, que describe como una entidad fluye a travs del sistema. Un sistema o modelo de simulacin puede tener diferentes tipos de procesos.
La entidad llega Evento La entidad comienza su servicio Evento La entidad finaliza su servicio Tiempo Evento

Posible paso del tiempo en la cola

Paso del tiempo por servicio de la entidad Flujo de una entidad a travs del sistema

Lenguajes de simulacin

2006-2007

Rutina del proceso de un usuario en una cola con un nico servidor


Rutina de usuario 1 Planificar un evento de llegada para la siguiente entidad usuario 3 2
El servidor est vaco?

4 Esperar hasta que es seleccionado para el servicio


paso del tiempo simulado

no

Colocar esta entidad usuario en la cola

si Colocar el servidor a ocupado Planificar un evento de salida para esta entidad usuario Esperar hasta que el servicio est completado
paso del tiempo simulado

Eliminar esta entidad usuario de la cola 6 5 7

Colocar el servidor a vaco Terminacin de esta entidad


Return
Lenguajes de simulacin

9 10

2006-2007

Aproximacin basada en procesos


En la aproximacin basada en eventos, la simulacin se ejecuta como una secuencia de eventos ordenados en el tiempo, pero un evento no consume tiempo. La aproximacin basada en procesos enfoca en la descripcin de los procesos. Proporciona un proceso para cada entidad del sistema y el tiempo que consume dicho proceso. La aproximacin basada en procesos es ms sencilla conceptualmente, pero generalmente supone menor control y flexibilidad en la programacin que la aproximacin basada en eventos. En un sistema sencillo de fabricacin, tenemos dos tipos de procesos: uno para los TRABAJOS y otro para las MQUINAS.

Lenguajes de simulacin

2006-2007

Modelado de procesos (I)


Paso 1: Identificar las entidades del sistema y sus atributos Entidad Atributo
Trabajo Tiempo de llegada Mquina Estado (Ocupada o vaca) Trabajo es una entidad temporal Mquina es una entidad permanente

Paso 2: Determinar las variables de estado


El estado del sistema en el instante t est determinado por: Nmero de trabajos en la cola (n=0, 1, 2,) Estado de la mquina (i=0, 1) Tiempo entre llegadas restante (a0) Tiempo de servicio restante (b0) Entonces el tiempo hasta el siguiente evento est dado por min(a,b)

Lenguajes de simulacin

2006-2007

Modelado de procesos (II)


Paso 1: Identificar los eventos elementales

Un cambio de estado es un evento Trabajo Mquina Llegada Eliminar de la cola Salida Pasar a ocupada Mquina Comienzo servicio Pasar a vaca Fin servicio Colocarse en la cola
C. en Cola Espera

Espera
Ocupada

E. de cola

Vaca

Trabajo

Llegada Espera

C. servic.

F. servic.

Salida

Lenguajes de simulacin

2006-2007

Modelado de procesos (III)


Trabajo

Lenguajes de simulacin

2006-2007

Modelado de procesos (IV)


Mquina

Lenguajes de simulacin

2006-2007

Modelado de procesos (V)


Rutina tpica de temporizacin

Lenguajes de simulacin

2006-2007

Entidades, atributos, recursos y colas de algunas aplicaciones de simulacin


Tipo de sistema Fabricacin Entidades Pieza Atributos Nmero de pieza, fecha de entrega Destino, longitud del mensaje Nmero de vuelo, peso Nombre, nmero de pliza, cantidad Recursos Mquinas, trabajadores Colas Colas o buffers

Comunicacin Mensaje

Nodos, enlaces Buffers

Aeropuerto

Avin

Corredores, puertas Agentes, empleados

Colas

Agencia de seguros

Solicitud, reclamacin

Colas

Lenguajes de simulacin

2006-2007

Caractersticas deseables del software (I)


1.- Posibilidades generales (incluyendo flexibilidad de modelado y facilidad de uso). 2.- Consideraciones respecto al hardware y software. 3.- Animacin. 4.- Funcionalidades estadsticas. 5.- Soporte del usuario y documentacin. 6.- Informes y grficos de resultados.

Lenguajes de simulacin

2006-2007

Caractersticas deseables del software (II)


Respecto a las posibilidades generales: 1.- Flexibilidad de modelado:
Capacidad para definir y modificar atributos de las entidades, variables globales y de utilizar ambas en la lgica de decisin. Capacidad de usar expresiones y funciones matemticas. Modelado jerrquico. Posibilidad de crear nuevos modelos a partir de otros ya existentes.

2.- Ayudas para la depuracin:


Seguir una entidad a travs del modelo. Monitorizar la simulacin a medida que avanza. Ir hasta un instante de tiempo determinado. Avanzar hasta una determinada condicin. Ver el estado del modelo cada vez que ocurre un evento particular. Colocar un determinado valor en ciertos atributos para que ocurra un suceso particular, normalmente con una probabilidad pequea.
Lenguajes de simulacin 2006-2007

Caractersticas deseables del software (III)


3.- Velocidad rpida en la ejecucin. 4.- Entornos de modelado prximos al usuario. 5.- Importacin o exportacin de datos desde (o a) otras aplicaciones. Por ejemplo, desde Excel. 6.- Posibilidad de simular escenarios que iteran sobre un parmetro. Por ejemplo, nmero de mquinas disponibles. 7.- Posibilidades de simulacin continua-discreta. 8.- Invocacin de rutinas externas al paquete. 9.- Posibilidad de comenzar o no desde un estado vaco. 10.- Posibilidad de guardar el estado al final de una simulacin. 11.- Coste.

Lenguajes de simulacin

2006-2007

Resumen de las caractersticas a considerar


1.- Entrada. 2.- Proceso. 3.- Salida. 4.- Entorno. 5.- Caractersticas del vendedor. 6.- Coste

Algunas consideraciones:
Cules son las caractersticas apropiadas? No realizar juicios en base a si o no. Considerar las posibilidades reales de una caracterstica.

Lenguajes de simulacin

2006-2007

Simscript II.5 Aproximacin al evento


Preamble Declaraciones globales no ejecutables incluyendo: entidades permanentes entidades temporales notificaciones de eventos activar la propiedad Programa principal, eventos y subrutinas Ejecutable

Mostraremos cada estructura utilizando el sistema produccin simple

Lenguajes de simulacin

2006-2007

Simscript II.5 Evento. Definicin de variables globales


preamble normally mode is integer the system owns a QUEUE permanent entities every MACHINE has a STATUS temporary entities every JOB has an ARRIVAL.TIME and may belong to the QUEUE define ARRIVAL.TIME and WAITING.TIME as double variables tally AVE.WAIT as the mean WAITING.TIME event notices include ARRIVAL every DEPARTURE has a SERVER and a CUSTOMER priority order is ARRIVAL and DEPARTURE define LAMBDA and MU as double variables define N and MAX as variables define SEED to mean seed.v(1) define M to mean n.MACHINE define IDLE to mean 0 define BUSY to mean 1 define SERVICE_TIME and INTER_ARRIVAL_TIME as double functions end
Lenguajes de simulacin 2006-2007

Simscript II.5 Conjuntos


Una declaracin de conjunto define implicitamente variables globales como: Atributos de propietario: the system n.SET= nmero de elementos en el conjunto n.QUEUE f.SET= direccin del primer elemento f.QUEUE l.SET= direccin del ltimo elemento l.QUEUE Atributos de miembro: JOB p.SET= un puntero al miembro predecesor en el conjunto s. SET= un puntero al miembro sucesor en el conjunto m.SET= un flag de comprobacin de error para la pertenencia de un miembro al conjunto f.queue i.queue n.queue p.set s.set m.set

Lenguajes de simulacin

2006-2007

Simscript II.5 Programa principal


main call GETINPUT call INITIALIZATION start simulation end routine GETINPUT print 1 line thus lambda, mu, max, seed read LAMBDA, MU, MAX and SEED end routine INITIALIZATION let M=1 let N=0 schedule an ARRIVAL now create each MACHINE end
Lenguajes de simulacin 2006-2007

Simscript II.5 Evento llegada


event ARRIVAL saving the event notice create a JOB let ARRIVAL.TIME(JOB)=time.v reschedule this ARRIVAL at time.v+INTERARRIVAL_TIME for each MACHINE with STATUS=IDLE find the first case if none file JOB in QUEUE else let STATUS=BUSY call ACCOUNTING schedule a DEPARTURE given MACHINE and JOB at time.v+SERVICE_TIME end if return end

Lenguajes de simulacin

2006-2007

Simscript II.5 Evento salida


event DEPARTURE given SERVER and CUSTOMER define SERVER and CUSTOMER as integer variables destroy JOB called CUSTOMER if QUEUE is empty let STATUS(SERVER)=IDLE else remove the first |JOB from the QUEUE call ACCOUNTING schedule a DEPARTURE given SERVER and JOB at time.v+SERVICE_TIME end if return end

Lenguajes de simulacin

2006-2007

Simscript II.5 Evento salida


routine ACCOUNTING let N=N+1 let WAITING.TIME = time.v-ARRIVAL.TIME(JOB) if N>=MAX call OUTPUT stop end if return end routine OUTPUT print 1 line with AVE.WAIT thus Mean waiting time **.*** return end routine SERVICE_TIME return with exponential.f(1.0/MU,1) end routine INTERARRIVAL_TIME return with exponential.f(1.0/LAMBDA,1) end
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (I)


Sentencias de ejecucin de proceso activate a nombre de proceso in expresin de tiempo create a nombre de proceso work expresin de tiempo wait expresin de tiempo interrupt nombre de proceso called nombre suspend destroy nombre de proceso called nombre Sentencias de ejecucin de recurso request cantidad units of nombre de recurso(index) with expresin de prioridad relinquish cantidad units of nombre de recurso(index)

Lenguajes de simulacin

2006-2007

Simscript II.5 Orientacin a procesos (II)


preamble normally mode is integer the system owns a QUEUE and an IDLE.LIST processes every MACHINE has a CUSTOMER and can belong to the IDLE.LIST every JOB has an ARRIVAL.TIME and may belong to the QUEUE define ARRIVAL.TIME and WAITING.TIME as double variables tally AVE.WAIT as the mean WAITING.TIME priority order is JOB and MACHINE define LAMBDA and MU as double variables define N and MAX as variables define SEED to mean seed.v(1) define M as a variable define SERVICE_TIME and INTER_ARRIVAL_TIME as double functions end
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (III)


main call GETINPUT call INITIALIZATION start simulation end routine GETINPUT print 1 line thus lambda, mu, max, seed read LAMBDA, MU, MAX and SEED end routine INITIALIZATION let M=1 let N=0 for I=1 to M activate a MACHINE now activate a JOB now end
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (IV)


process JOB define CLIENT as a variable let ARRIVAL.TIME(JOB) = time.v let CLIENT = JOB activate a JOB at time.v + INTERARRIVAL_TIME let JOB = CLIENT if the IDLE.LIST is empty file JOB in the QUEUE else remove the first MACHINE from the IDLE.LIST let CUSTOMER = JOB activate the MACHINE now always suspend end
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (V)


process MACHINE 'A' if QUEUE is empty file MACHINE in the IDLE.LIST suspend else remove the first JOB from the QUEUE let CUSTOMER = JOB endif call ACCOUNTING work SERVICE_TIME units activate the JOB called CUSTOMER now go to 'A' return end Las rutinas son las mismas que para la orientacin a eventos
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (VI)


preamble normally mode is integer processes every JOB has an ARRIVAL.TIME define ARRIVAL.TIME and WAITING.TIME as double variables tally AVE.WAIT as the mean of WAITING.TIME resources include MACHINE define LAMBDA and MU as double variables define N and MAX as integer variables define SEED to mean seed.v(1) define SERVICE_TIME and INTERARRIVAL_TIME as double functions end

Lenguajes de simulacin

2006-2007

Simscript II.5 Orientacin a procesos (VII)


main call GETINPUT call INITIALIZATION start simulation end routine GETINPUT print 1 line thus lambda, mu, max, seed: read LAMBDA, MU, MAX and SEED end routine INITIALIZATION let n.MACHINE = 1 create each MACHINE let u.MACHINE(1) = 1 let N = 0 activate a JOB now end
Lenguajes de simulacin 2006-2007

Simscript II.5 Orientacin a procesos (VIII)


process JOB define CLIENT as a variable let ARRIVAL.TIME(JOB) = time.v let CLIENT = JOB activate a JOB at time.v + INTERARRIVAL_TIME let JOB = CLIENT request 1 unit of MACHINE(1) call ACCOUNTING work SERVICE_TIME units relinquish 1 unit of MACHINE(1) return End

Las rutinas son, como en el caso anterior, las mismas

Lenguajes de simulacin

2006-2007

Simscript II.5 Un ejemplo de proceso sencillo


process USUARIO define TIME.OF.ARRIVAL as a variable activate a USUARIO in EXPONENTIAL.F(MARRVT,1) minutes (llegada del siguiente usuario al sistema) let TIME.OF.ARRIVAL = TIME.V request 1 SERVER (solicita el uso del recurso servidor. Si est ocupado request se encarga de suspender el proceso) let DELAY = TIME.V TIME.OF.ARRIVAL (diferencia entre el tiempo de llegada y el actual) CHECK.FOR.TERMINATION work EXPONENTIAL.F(MARRVT,1) minutes relinquish 1 server (libera el servidor) end

Esto representa una rutina para el modelo de una cola M/M/1


Lenguajes de simulacin 2006-2007

GPSS(I)

Lenguajes de simulacin

2006-2007

GPSS(II)
LINE#STMT# IF DO BLOCK# *LOC OPERATION A,B,C,D,E,F,G COMMENTS 11 22 33 44 55 66 77 88 99 10 10 11 11 12 12 13 13 14 14 1 15 15 1 16 16 1 17 17 ENDDO 18 18 END
Lenguajes de simulacin

SIMULATE INTEGER &I TPAGO FUNCTION RN(2), D15 0.0,3.64/0.142,6.09/0.354,8.39/0.496,10.76/0.608,13.14/0.737,15.51/ 0.804,17.88/0.845,20.26/0.883,22.63/0.916,25.00/0.954,27.38/29.75/ 0.97,32.12/0.983,36.87/1.0,62.98 1 GENERATE RVEXPO(1,16.398) 2 QUEUE COLAP 3 SEIZE PEAJE 4 DEPART COLAP 5 ADVANCE FN(TPAGO) 6 RELEASE PEAJE 7 TERMINATE 1 DO &I=1,21,1 START 240 RESET

2006-2007

SIMAN
SIMAN (SIMulation Analysis) Adecuado para sistemas discretos pero tambin para continuos y combinados (continuos/discretos) Derivado de GPSS. Orientacin a procesos, flujo de entidades Considera las tres fases fundamentales de un estudio de simulacin (1). Permite la evaluacin de alternativas sin alterar la estructura del sistema definido.

(1)
i. ii. iii. Definicin del modelo (CREATE, SEIZE, RELEASE, DELAY, ) Experimentacin con el modelo (PROJECT, DISCRETE, RESOURCES, ) Anlisis de resultados

Lenguajes de simulacin

2006-2007

SIMAN
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 11 12 BEGIN; CREATE:EX(1,1):MARK(1); QUEUE,1; SEIZE:SERVER TALLY:1,INT(1); COUNT:1,1; DELAY:EX(2,2); RELEASE:SERVER:DISPOSE; END; BEGIN; PROJECT, M/M/1 QUEUE, A. LAW, xx/xx/xx; DISCRETE, 100,1,1; RESOURCES:1,SERVER; PARAMETERS: 1,1.0; 2,0.5; TALLIES: 1, DELAY IN QUEUE; COUNTER:1, CUSTOM DELAYS, 1000; DSTAT:1, NQ(1), NUMBER IN QUEUE; 2, NR(1), SERVER UTIL.; REPLICATE, 1; END; Crea los usuarios que llegan Espera por el servidor Consigue (captura) el servidor Obtiene el retardo en la cola Cuenta los retrasos totales Genera la duracin del servicio Libera el servidor

100 entidades, 1 atributo, 1 cola 1 servidor la primera exponencial media 1,0 la segunda exponencial media 0,5

Lenguajes de simulacin

2006-2007

Fuentes Bibliogrficas

Libros: Banks, Carson, Nelson, Nicol. Discrete event system simulation (third edition). El captulo 4 trata sobre software de simulacin. http://www.bcnn.net Law and Kelton. Simulation Modeling and Analysis (third edition). El captulo 3 est dedicado al tema. http://www.mhhe.com/lawkelton La figura y el texto de GPSS estn extrados del libros Simulacin de sistemas discretos, Jaime Barcel, ISDEFE, 1996

Lenguajes de simulacin

2006-2007

Direcciones web
Existen varias direcciones Web interesantes:

Productos:
SIMSCRIPT II.5: http://www.caciasl.com/ http://www.automod.com/

http://www.ecst.csuchico.edu/~mcleod/ http://www.idsia.ch/~andrea/simtools.html http://www-pub.cise.ufl.edu/~fishwick/websim.html http://www.idsia.ch/~Eandrea/sim/simtools.html

Lenguajes de simulacin

2006-2007

S-ar putea să vă placă și