0% encontró este documento útil (0 votos)
558 vistas41 páginas

Lenguajes y Software de Simulación

Este documento describe diferentes lenguajes de simulación, incluyendo simuladores orientados a eventos y procesos. Explica que los lenguajes de simulación automatizan muchas tareas y reducen el esfuerzo de modelado en comparación con lenguajes generales. Además, describe varios lenguajes de simulación populares como SIMSCRIPT, GPSS, SIMAN y su funcionalidad.

Cargado por

Perla VilleAl
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
558 vistas41 páginas

Lenguajes y Software de Simulación

Este documento describe diferentes lenguajes de simulación, incluyendo simuladores orientados a eventos y procesos. Explica que los lenguajes de simulación automatizan muchas tareas y reducen el esfuerzo de modelado en comparación con lenguajes generales. Además, describe varios lenguajes de simulación populares como SIMSCRIPT, GPSS, SIMAN y su funcionalidad.

Cargado por

Perla VilleAl
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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

También podría gustarte